即使数据存在,Prepared Statement也不会返回行

时间:2018-01-21 15:33:48

标签: php mysqli

您好我应该如何做这项工作:

我想知道为什么当我使用准备好的声明时它不起作用。我尝试使用查询方法,但它确实有效。

这是我尝试过的:

$query = new mysqli('localhost','root', '', 'sample');

$rows = $query->query('SELECT * FROM `sample`.`sample_user` WHERE `userName` = "test" AND `userPass` = "data"');
echo $rows->num_rows; // this returns 1 since I have this record from my database

我正在尝试使用预先准备好的声明来增强它:

$query = new mysqli('localhost','root', '', 'sample');
$prepared = $query->prepare('SELECT * FROM `sample`.`sample_user` WHERE `userName` = ? AND `userPass` = ?');

$prepared->bind_param("ss", $userName, $userPass );
$prepared->execute();
echo $prepared->num_rows; //this returns 0

我坚持这个问题。也许我错过了一些东西。

1 个答案:

答案 0 :(得分:1)

是的,你需要返回结果,绑定只是将查询绑定到你提供的参数。

 /* Get the result */
 $result = $stmt->get_result();

 /* Get the number of rows */
 $num_of_rows = $result->num_rows;