mysqli_multi_query函数不更新数据库中的所有表行

时间:2011-02-08 11:15:31

标签: php mysqli

我一直在尝试使用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周编码旅程的最后一段。谢谢!

2 个答案:

答案 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

相关问题