PHP $ stmt-> num_rows不适用于预准备语句

时间:2016-10-31 12:36:06

标签: php mysql oop prepared-statement

我想检查if ($numRows >= 1)然后它应该返回一些东西。

当我使用$con->mysql("{QUERY}")时,它可以正常工作。

但是当我使用$stmt = $con->prepare("{QUERY}")时,它无法正常工作。

有没有人有线索?

工作方法

<?php
if ($result = $con->query("SELECT username FROM users WHERE username = 'test'")) {
    $numRows = $result->num_rows;

    echo $numRows;
}
?>

结果:1​​

不工作方法

<?php
$name = 'test';

$stmt = $con->prepare("SELECT username FROM users WHERE username = ?");
$stmt->bind_param('s', $name);

$name = 'test';

$stmt->execute();

$numRows = $stmt->num_rows;

echo $numRows;
?>

结果:0

1 个答案:

答案 0 :(得分:2)

在调用SELECT方法之前,您需要从->num_rows()查询中传输结果集。

// your code    

$stmt->execute();
$stmt->store_result();  
$numRows = $stmt->num_rows;

echo $numRows;

以下是参考资料: