想象一下这段代码:
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循环有问题吗?或者如何获得受影响的行数?
答案 0 :(得分:4)
什么?这很简单吗? ...谢谢,你能把它作为答案吗?我会接受它 - kikinet
根据OP的要求:
num_rows()
用于SELECT,而不是UPDATE。
您要使用的是affected_rows()
。
参考文献:
来自affected_rows()
的手册:
面向对象的风格
int $mysqli->affected_rows;
程序风格
int mysqli_affected_rows ( mysqli $link )