1

我尝试执行一个非常简单的查询来删除一行。“max_allowed_pa​​cket”等于“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)

但有时(只是有时不是每次)我得到那个错误并且行没有被删除,所以短信被多次发送给同一个用户,因为它仍然在表中。有什么想法可以解决这个问题吗?

提前致谢。

4

1 回答 1

2

当您使用类似的模式时

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 仍然可以使用其连接。

于 2018-07-07T11:26:29.020 回答