Удаление данных из пользовательской таблицы в WordPress

20 июн. 2015 г., 10:11:05
Просмотры: 32K
Голосов: 1

Я пытаюсь удалить записи из моей пользовательской таблицы, но ничего не удаляется.

Вот мой код:

<?php
global $wpdb;
$retrieve_data = $wpdb->get_results( "SELECT * FROM wp_paypal" );

// здесь код для отображения...

?>
<form method="post" enctype="multipart/form-data">
   <td><input type="submit" name="delete" value="Удалить" /></td>
</form>
<?php
$myid = $retrieved_data->id;

if (isset($_POST['delete'])) {
        //global $wpdb;
        $wpdb->query(
              'DELETE FROM $wpdb->paypal
               WHERE id = "'.$myid.'"
              '
        );

    }
}
1
Комментарии

С какой проблемой вы столкнулись?

sakibmoon sakibmoon
20 июн. 2015 г. 10:51:54
Все ответы на вопрос 2
0

Попробуйте использовать $wpdb->prefix вместо $wpdb в DELETE запросе.

Пример:

 $wpdb->query(
              'DELETE  FROM '.$wpdb->prefix.'paypal
               WHERE id = "'.$myid.'"'
);
20 июн. 2015 г. 14:47:08
0

Я знаю, что опаздываю... но основная проблема в вашем вопросе заключается в том, что вы используете одинарные кавычки (') в вашем выражении:

$wpdb->query(
      'DELETE  FROM $wpdb->paypal
       WHERE id = "'.$myid.'"
      '
);

Это означает, что $wpdb->paypal не дает ожидаемого результата. Вы предполагаете, что это выводит имя таблицы "paypal", но это не так.

Если $myid имеет значение 4, ваш PHP-код сгенерирует такой SQL-запрос:

DELETE FROM $wpdb->paypal WHERE id = 4

... вместо того, чтобы быть:

DELETE FROM wp_paypal WHERE id = 4

Чтобы исправить проблему, вам необходимо:

  1. Заменить одинарные кавычки на двойные. (Читайте почему)
  2. Добавить префикс таблицы перед именем таблицы.

Вот так:

$table_name = $wpdb->prefix . 'paypal';
$wpdb->query( "DELETE  FROM {$table_name} WHERE id = '{$myid}'" );

Также убедитесь, что вы санируете переменную $myid, потому что если я передам значение 0 OR 1=1, это сгенерирует такой SQL-запрос:

DELETE FROM wp_paypal WHERE id = 0 OR 1=1

... и удалит все строки в таблице

30 нояб. 2018 г. 15:18:26