我已经尝试过查看其他所有人的堆栈溢出标题中的确切错误,但我仍然无法解决这个问题。
我使用http://andrew-greig.net/portfolio/better_mysqli.htm进行mysqli扩展,因为它确实使绑定项更容易成为数组。我一直试图从原生的mysql转移到mysqli,我总是遇到同样的问题,试着找出是否有结果。
这是我目前的代码
$searchSQL = $mysqli->select("SELECT * FROM coreUsers WHERE Username = ? AND Password = ?", $row, array($username, $password));
var_dump($searchSQL);
while($searchSQL->fetch())
{
echo "<br/>---FOUND Valid LOGIN!!</br>";
exit;
}
我得到的输出是..
object(mysqli_stmt)#2 (10) { ["affected_rows"]=> int(-1) ["insert_id"]=>
int(0) ["num_rows"]=> int(0) ["param_count"]=> int(2) ["field_count"]=> int(19)
["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { }
["sqlstate"]=> string(5) "00000" ["id"]=> int(1) }
---FOUND Valid LOGIN!!
所以它找到了记录,如果我输出记录信息,它确实从行响应中回显出用户名和密码,但num_rows总是0.为此我永远无法得到
$rowCount = $searchSQL->num_rows();
在执行while循环之前尝试查看是否有实际结果时工作。
---- ---- EDIT
我不知道为什么这被标记为重复。添加的帖子指的是&#34; boolean&#34;那不是我的错误。我是对象。
if ($searchSQL === false) {
echo "invalid";
} else {
echo "valid";
}
此代码无效(从您标记为重复的帖子),因为如果您实际查看我在扩展程序中使用的代码,我的响应将始终返回true。
答案 0 :(得分:0)
正如@Ghost所提到的,我失踪的问题是1行代码。
$stmt->store_result();
$rowCount = $stmt->num_rows;
必须先调用此方法,然后才能在预准备语句中访问num_rows()。