2016-03-21 176 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();

相关问题