我在PHP中使用mysqli類和準備語句編寫數據庫處理程序類。我試圖打印出結果。它沒有正常工作,所以我決定做一些調試。我嘗試使用mysqli_statement
類中的num_rows()
方法,但它仍然返回0.我決定編寫一小部分測試代碼以使它更簡單,以便我可以看到發生了什麼問題。然後我能夠返回我想要的數據,但即使實際選擇和檢索某些數據,方法仍會返回0。下面是代碼:mysqli_statement :: num_rows()返回錯誤的值
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
if(mysqli_connect_errno())
{
die('connection failed');
}
$statement = $mysqli->stmt_init();
$query = "SELECT name FROM table WHERE id = '2000'";
if($statement->prepare($query))
{
$statement->execute();
$statement->bind_result($name);
$statement->fetch();
$statement->store_result();
echo $statement->num_rows();
echo $name;
}
else
{
echo 'prepare statement failed';
exit();
}
所以是的,預期的結果是:
1name
而實際結果是:
0name
誰能告訴我這是爲什麼?
確實,這是問題所在。爲了讓num_rows()返回正確的值,必須在fetch()之前調用store_result()。 – 2008-09-17 06:12:51
這就是我所想的;獲取數據會增加內部行計數器,以便您可以執行類似while($ statement-> num_rows()){/ * do stuff * /} – 2008-09-17 15:08:50