当运行下面的代码时,在第二个循环(它循环数量的次数)它给我一个命令不同步错误。造成这种情况的原因是什么?
PHP代码:
while ($i < $quantity) {
$result = mysqli_multi_query($con, "
INSERT INTO parts (capacity, length, width, height, orientation, weight, location, description, status, partNumber) VALUES ('$capacity', '$length', '$width', '$height', '$orient', '$weight', '$location', '$desc', '$status', '$partNum');
INSERT INTO craneparts (craneID, partsID) VALUES ('$craneID', LAST_INSERT_ID());
") or die(mysqli_error($con));
$i++;
}
答案 0 :(得分:3)
https://dev.mysql.com/doc/refman/5.0/en/commands-out-of-sync.html
如果你的命令不同步;你现在无法运行此命令 您的客户端代码,您以错误的顺序调用客户端函数。
例如,如果您使用的是mysql_use_result()和,则会发生这种情况 尝试在调用mysql_free_result()之前执行新查询。 如果您尝试执行两个返回数据的查询,也会发生这种情况 无需在中间调用mysql_use_result()或mysql_store_result()。
尝试在mysqli_multi_query调用
之间调用mysqli_next_resultwhile ($i < $quantity) {
$result = mysqli_multi_query($con, "
INSERT INTO parts (capacity, length, width, height, orientation, weight, location, description, status, partNumber) VALUES ('$capacity', '$length', '$width', '$height', '$orient', '$weight', '$location', '$desc', '$status', '$partNum');
INSERT INTO craneparts (craneID, partsID) VALUES ('$craneID', LAST_INSERT_ID());
") or die(mysqli_error($con));
while(mysqli_more_results($con) && mysqli_next_result($con)) {;} // flush multi_queries
$i++;
}