Удаление данных из пользовательской таблицы в 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.'"
'
);
}
}

user3463054
31
Комментарии
Все ответы на вопрос
2
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
Чтобы исправить проблему, вам необходимо:
- Заменить одинарные кавычки на двойные. (Читайте почему)
- Добавить префикс таблицы перед именем таблицы.
Вот так:
$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
... и удалит все строки в таблице

Maxime
133
30 нояб. 2018 г. 15:18:26
Похожие вопросы
1
ответов