2016-03-21 193 views
0

我正在嘗試SELECT COUNT表的總記錄,我做錯了什麼?在此先感謝致命錯誤:調用布爾型的成員函數fetch_row()

我收到此錯誤

Fatal error: Call to a member function fetch_row() on boolean

<?php 

$mysqli = new mysqli('localhost','root','','testing'); 

//Output any connection error 
if ($mysqli->connect_error) { 
    die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error); 
} 

//get total number of records 
$results = $mysqli->query("SELECT COUNT(*) FROM users"); 
$get_total_rows = $results->fetch_row(); //hold total records in variable 

$mysqli->close(); 
?> 

回答

4

您的代碼確實工作。

我創建一個簡單的表如下:

mysql> create table users(a int); 
Query OK, 0 rows affected (0.01 sec) 

mysql> insert into users(a) values(1); 
Query OK, 1 row affected (0.03 sec) 

mysql> insert into users(a) values(3); 
Query OK, 1 row affected (0.03 sec) 

mysql> insert into users(a) values(5); 
Query OK, 1 row affected (0.00 sec) 

並插入在一個代碼行:

echo $get_total_rows[0]; 

即在屏幕上印刷3。但是如果我拼錯了表名,我可以重現你看到的錯誤。

因此仔細檢查一下,您是否確實擁有表名。

+0

是的,解決了它,我有'用戶'而不是'用戶'...我沒有看到任何有關谷歌fetch_row ...感謝您的幫助! – Ris

+0

你,歡迎和享受! –

2

我打賭的$results值是FALSE,而不是一個結果集,因爲我猜你有一個SQL錯誤。嘗試運行在SQL客戶端的聲明,或在線檢查錯誤:只要表中存在

$results = $mysqli->query("SELECT COUNT(*) FROM users") or die($mysqli->error);

2

如果在訪問結果之前查詢腳本時出現錯誤,您也可以先檢查。

<?php 

$mysqli = new mysqli('localhost','root','','testing'); 

//Output any connection error 
if ($mysqli->connect_error) { 
    die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error); 
} 

//get total number of records 
$results = $mysqli->query("SELECT COUNT(*) FROM users"); 

// check first if there's an error in your query 
if ($mysqli->error) { 
    die($mysqli->error); 
} 

$get_total_rows = $results->fetch_row(); //hold total records in variable 
var_dump($get_total_rows); 

$mysqli->close(); 
+0

感謝var_dump(),當我修復表的名字時,我最終看到了結果...謝謝 – Ris

2

正如文檔所述,mysqli :: query在失敗時返回FALSE。所以你可以先通過mysql控制檯檢查你的SQL語句。

0

今天我偶然發現了這個相同的錯誤,並通過搜索引擎發現了這個問題。

我能夠解決它通過在以前運行的查詢的末尾添加$stmt->close();

相關問題