我一直在尝试使用mysqli_multi_query一次更新多个表行。我发现这个函数总是导致除1行之外的所有行的更新。例如,如果我指定要更新的5行数据,那么实际上只更新了4行。即使我将行数增加到6或7等,实际上只更新了'n-1'行('n'是我指定要更新的数字)。
部分代码如下:
<?php $jag = mysqli_connect($host, $user, $pass, $db); // connects to the database
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query2 .= "UPDATE inst_prod_stor SET age_type = '2' WHERE payer_mail = '$pmail' AND file_name = '$fname';";
print_r($query2);
// execute the 'update' multi query
$result2 = mysqli_multi_query($jag, $query2) or die(mysqli_error($jag));
mysqli_close($jag); ?>
在我执行了包含此代码的php文件后,我还检查了我的网页上的源代码,这很好。我没有收到任何错误。我实际上使用'print_r'函数检查在执行'mysqli_multi_query'函数之前没有遗漏任何数据。事实上,没有遗漏任何数据。每次执行代码时,函数的结果几乎都是完美的。唯一不完美的事实是表的一行永远不会更新。而且每次都是不同的一行。
我真的需要这方面的帮助,这是我完成一个我目前正在进行的项目之前的2或3周编码旅程的最后一段。谢谢!
答案 0 :(得分:0)
使用mysql_real_escape_string并删除$ query2附近的.
$pmail = mysql_real_escape_string($pmail);
$fname= mysql_real_escape_string($fname);
$query2 = "UPDATE inst_prod_stor SET age_type = '2' WHERE payer_mail = '$pmail' AND file_name = '$fname';";
答案 1 :(得分:0)
$result2 = mysqli_multi_query($jag, $query2) or die(mysqli_error($jag));
如果$ query2中的第一个查询有错误,将只会死()。
我建议您使用do-while循环来建立一种使用mysqli_error()&amp; amp;来调试非首先查询sql失败的方法。 mysqli_affected_rows()。
Strict Standards: mysqli_next_result() error with mysqli_multi_query