【发布时间】:2021-02-17 08:18:57
【问题描述】:
我今天早上刚开始在一些租用的服务器空间上从几个准备好的语句中收到一个错误:“格式错误的通信数据包。”
这似乎只发生在准备好的语句上。此代码已在服务器上使用多年,但今天开始抛出错误。
这个简单的语句抛出错误:
$stmt=$conn->prepare("SELECT RootedID, WeekDate, Qty FROM inventoryrooted");
$stmt->execute();
echo $stmt->error;
$stmt->bind_result($code, $WeekDate, $Qty);
$stmt->store_result();
while($stmt->fetch()){
$stmtInsertRC->execute();
}
$stmt->close();
如果我将其更改为普通连接,它可以正常工作:
$sql = "SELECT RootedID, WeekDate, Qty FROM inventoryrooted";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
$code = $row["RootedID"];
$WeekDate = $row["WeekDate"];
$Qty = $row["Qty"];
$stmtInsertRC->execute();
}
我在网站上准备了数百条运行良好的声明。这似乎只发生在几张桌子上。巧合的是,我今天早上在 Navicat 中打开了这两个表来查看数据……不确定这是否会损坏它们? 我已经尝试修复表格,制作新副本并恢复表格。我还要求站点管理员重新启动 MariaDB(仍在等待)。
有人对我应该在哪里寻找解决方案有任何建议吗?我是不是找错树了?
10.3.26-MariaDB
PHP 7.2.34
【问题讨论】:
-
经过更多检查,它似乎发生在几张桌子上。我仍然看不到一个模式,期望它总是一个 SELECT 语句。看起来准备好的 UPDATE 和 INSERT 语句很好。
标签: php mysql mariadb prepared-statement