2016-03-21 11 views
0

テーブルの合計レコードをSELECTしようとしていますが、何が間違っていますか?おかげで事前致命的なエラー:booleanのメンバー関数fetch_row()を呼び出す

に私は推測しているので、あなたがSQLエラーを得た、私は$resultsの値がFALSEではなく、結果セットで賭け、このエラー

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) 

そして、あなたのコード内の1行挿入:

echo $get_total_rows[0]; 

画面上に3を印刷しました。しかし、テーブル名のスペルを間違えた場合に表示されるエラーを再現できます。

実際にテーブル名が正しいことを再度確認してください。

+0

ええ、私は「ユーザー」ではなく「ユーザー」でした...私はGoogleのfetch_rowに関して何も見ませんでした...あなたの助けに感謝します! – Ris

+0

あなたと大歓迎です! –

2

を取得しています。 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();を追加することで解決できました。

関連する問題