我正在尝试从文字query
调用过渡到预准备语句。
我班上有以下功能:
public function read ($identifier) {
$stmt = static::$mysqli->prepare('SELECT * FROM `table` WHERE `id` = ?;');
$stmt->bind_param('i', $identifier);
$stmt->execute();
var_dump($stmt->num_rows);
}
我从phpMyAdmin知道数据库中有一行ID为1,但如果我拨打read(1);
,则num_rows
为0。
但是,如果我使用这个逻辑:
public function read ($identifier) {
$result = static::$mysqli->query('SELECT * FROM `table` WHERE `id` = '.(int) $identifier.';');
var_dump($result->num_rows);
}
我得到1。
答案 0 :(得分:2)
在$stmt->store_result();
来电后尝试拨打execute()
执行后结果尚未存储在内存中,您将需要获取所有行或为store_result()
变量调用num_rows
以显示受影响的实际行数。