mysqli_stmt_affected_rows不适用于update prepared语句

时间:2015-04-28 18:31:12

标签: php mysqli

我有这段代码

$SQL = "UPDATE cart SET a = ? WHERE b = ? AND c = ?";

            if($stmt2 = mysqli_prepare($conn, $SQL )){
                        mysqli_stmt_bind_param($stmt2, "iii", $a1, $b1, $c1);
                        mysqli_stmt_execute($stmt2);

                if(mysqli_affected_rows($conn)){
                    echo "updated";
                    mysqli_stmt_close($stmt2);
                }
                else
                    echo "nope";
            }

我正在弄清楚为什么上面的代码永远不会工作。我已经调试了我知道的每一种方式。

最后我删除if条件。不知何故,它正在发挥作用。试图浏览互联网,找出原因,但没有发现任何原因。有人可以向我解释为什么会这样? 我是mysqli的新手。真的需要帮助:)谢谢!

1 个答案:

答案 0 :(得分:2)

您应该使用

mysqli_stmt_affected_rows($stmt2);
  

mysqli_stmt :: $ affected_rows - mysqli_stmt_affected_rows - 返回上次执行的语句更改,删除或插入的总行数

而不是

mysqli_affected_rows($conn);

用于普通查询执行。

<强> Manual

修改

我刚注意到你的问题标题提到正确的函数名称,而你的代码使用了错误的