MySQLi编写的语句没有返回任何内容

时间:2013-12-13 21:23:08

标签: php mysql mysqli prepared-statement sqlbindparameter

我正在尝试从文字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。

1 个答案:

答案 0 :(得分:2)

$stmt->store_result();来电后尝试拨打execute() 执行后结果尚未存储在内存中,您将需要获取所有行或为store_result()变量调用num_rows以显示受影响的实际行数。