Как использовать $wpdb для удаления записей из пользовательской таблицы

11 янв. 2017 г., 20:53:03
Просмотры: 84K
Голосов: 10

У меня возникли трудности с поиском хорошего руководства по использованию функции $wpdb.

Я пытаюсь удалить строку из пользовательской таблицы с названием: eLearning_progress

$removefromdb = $wpdb->query("DELETE FROM eLearning_progress WHERE ID = '$user_id' AND module_id = '$singlecomparearrays_remove'" );

Строка, которую я хочу удалить, имеет ID равный '$user_id' и 'module_id' равный '$singlecomparearrays_remove'.

Я также пробовал:

$removefromdb = $wpdb->query( "DELETE FROM eLearning_progress WHERE ID = ($user_id) AND module_id = ($singlecomparearrays_remove)" );

а затем:

$removefromdb = $wpdb->query($wpdb->prepare("DELETE FROM eLearning_progress WHERE ID = %s AND module_id = %s", $user_id, $singlecomparearrays_remove));

Пожалуйста, постарайтесь не вздыхать слишком громко от моих попыток, но я не могу найти хорошее руководство по использованию команды DELETE с переменными.

Буду благодарен за любую помощь.

С уважением,
Алекс

2
Комментарии

Ты читал кодекс про delete()?

bueltge bueltge
11 янв. 2017 г. 21:55:00

Да, но я не до конца понимаю, как заставить это работать с моими переменными. Не мог бы ты привести пример?

Alex Green Alex Green
12 янв. 2017 г. 11:36:29
Все ответы на вопрос 4
0
34

Лучшее решение с использованием WP API для этой задачи — применение функции delete() для удаления строки.

Небольшой пример для удаления строки с ID в пользовательской таблице eLearning_progress.

$id = 0815;
$table = 'eLearning_progress';
$wpdb->delete( $table, array( 'id' => $id ) );

Но я не вижу, какую именно строку вы собираетесь удалить в таблице eLearning_progress? Возможно, стоит уточнить вопрос, чтобы понять его лучше.

12 янв. 2017 г. 11:53:26
0

Возможно, что ваш SQL-запрос создает проблемы, даже при использовании $wpdb->delete. Я обнаружил, что полезно использовать один из следующих подходов:

  1. Вызвать $wpdb->show_errors(); перед выполнением запроса
  2. Включить режим отладки с помощью define( 'WP_DEBUG', true ); в вашем файле wp-config.php
26 февр. 2019 г. 08:18:58
1

С помощью этого можно легко удалить

$MailMetaKey = ваш_ключ
$post_id = ваш_id_поста

$wpdb->query($wpdb->prepare("DELETE * FROM f0_postmeta WHERE meta_key = $MailMetaKey' and post_id = '$post_id' "));
16 дек. 2021 г. 10:10:13
Комментарии

Это не сильно отличается от примеров автора, которые не сработали, за исключением того, что вы используете prepare(). Что делает prepare(), если вы не используете подстановку аргументов функции?

Rup Rup
16 дек. 2021 г. 13:39:08
1

Этот код не работает, выдает ошибку. Я пытался

Пожалуйста, посмотрите на этот скриншот https://prnt.sc/M3DYH_EmHCtM

global $wpdb;

$id = $_REQUEST['delete'];

$table = 'custom_user_info';

$wpdb->delete( $table, array( 'id' => $id ) );

Но когда я использую этот код, он работает идеально

$db_config = mysqli_connect('localhost', 'root', '', 'develop');

$id = $_REQUEST['delete'];

$delete = "DELETE FROM custom_user_info WHERE id=$id";

$query = mysqli_query($db_config, $delete);
15 апр. 2022 г. 01:41:19
Комментарии

Ваш ответ можно улучшить, добавив дополнительную подтверждающую информацию. Пожалуйста, [отредактируйте] его, чтобы добавить больше деталей, таких как цитаты или документация, чтобы другие могли убедиться в правильности вашего ответа. Вы можете найти больше информации о том, как писать хорошие ответы, в справочном центре.

User User
16 апр. 2022 г. 23:05:10