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)

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

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

1 ответ

Решение

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

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 может использоваться соединение, пока вы читаете строки из его набора результатов.

Другие вопросы по тегам