mysqli_stmt_affected_rows 不适用于更新准备好的语句

Alv*_*vin 1 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";
            }
Run Code Online (Sandbox Code Playgroud)

我正在弄清楚为什么上面的代码永远不起作用。我已经用我所知道的一切方式进行了调试。

最后我删除了 if 条件。不知何故,它正在发挥作用。试图在互联网上浏览以找出原因,但没有找到任何原因。有人可以向我解释一下为什么会这样吗?

Han*_*nky 5

你应该使用

\n\n
mysqli_stmt_affected_rows($stmt2);\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

mysqli_stmt::$affected_rows -- mysqli_stmt_affected_rows \xe2\x80\x94 返回最后执行的语句更改、删除或插入的总行数

\n
\n\n

代替

\n\n
mysqli_affected_rows($conn);\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是用于普通查询执行的。

\n\n

手动的

\n\n

编辑

\n\n

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

\n