如何从foreach中执行的准备(更新)语句中获取num行

时间:2016-08-22 15:17:58

标签: php mysql

想象一下这段代码:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if ($stmt = $conn->prepare("UPDATE courses SET courses_price = ? WHERE id_courses = ?")) {
        foreach ($_POST as $id => $price) {
            $stmt->bind_param('ii', $price, $id);
            $stmt->execute();
        }
        $stmt->store_result();
        if ($stmt->num_rows === 0) {
            echo 'not affected';
        } else {
            echo 'affected';
        }

    }
}

为什么num_rows总是返回0?是的,我知道它只计算被检测到的行..一行总是受到影响。

foreach循环有问题吗?或者如何获得受影响的行数?

1 个答案:

答案 0 :(得分:4)

  

什么?这很简单吗? ...谢谢,你能把它作为答案吗?我会接受它 - kikinet

根据OP的要求:

num_rows()用于SELECT,而不是UPDATE。

您要使用的是affected_rows()

参考文献:

来自affected_rows()的手册:

面向对象的风格
int $mysqli->affected_rows;

程序风格
int mysqli_affected_rows ( mysqli $link )