MySQL: ошибка при отправке пакета QUERY. ПИД = 2

Я пытаюсь выполнить очень простой запрос, чтобы удалить одну строку. «max_allowed_packet» равен «1073741824», поэтому я запутался, почему я получаю

Error while sending QUERY packet. PID=2

Я выбираю только 25 строк из таблицы, чтобы отправить их данные через sms и sleep (1) после удаления строки.

Запрос:

$stmt = $db->prepare("select * from sms limit 25");
$stmt->execute();

Я перебираю строки здесь и отправляю данные строк через смс, затем удаляю их

$q = $db->prepare("delete from sms where id = '$r[id]'");
$q->execute();
sleep(1)

Но иногда (просто иногда не каждый раз) я получаю эту ошибку, и строка не удаляется, поэтому смс-сообщение отправляется так много раз одному и тому же пользователю, потому что оно все еще находится в таблице. Есть идеи, чтобы решить это?

Заранее спасибо.

0

Решение

Когда вы используете шаблон как

prepare mysql query a
execute mysql query a
for each row in result set a
prepare mysql query b
execute mysql quer b

Вы должны использовать отдельное соединение БД для запроса MySQL b. Зачем? В запросе a все еще может использоваться соединение, пока вы читаете строки из его набора результатов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]