2016-07-25 17 views
0

文でget_result()を使用すると、有効なオブジェクトの代わりにfalseが返されます。PHP mysqli get_result()はfalseを返します

function getGames() { 
    $ret = array(); 
    $stmt = DB::getConnection()->prepare("SELECT * FROM games ORDER BY position DESC"); 
    $stmt->execute(); 
    var_dump($stmt); 
    $result = $stmt->get_result(); 
    while ($row = $result->fetch_assoc()) { 
     echo "read one entry"; 
    } 
    return $ret; 
} 

記載されているのvar_dump戻り、私はどんな情報フォームを抽出することはできません。このメッセージ:この作業を取得するために

<?php 
class DB { 
    private static $connection; 

    static function getConnection() { 
     if (!isset($connection) || $connection->ping()) { 
      $connection = new mysqli("localhost", "user", "pw", "db"); 
      $connection->query("SET NAMES 'utf8'"); 
     } 
     return $connection; 
    } 
} 

すべてのヘルプ:

object(mysqli_stmt)#3 (10) { ["affected_rows"]=> int(-1) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(0) ["field_count"]=> int(5) ["errno"]=> int(2006) ["error"]=> string(26) "MySQL server has gone away" ["error_list"]=> array(1) { [0]=> array(3) { ["errno"]=> int(2006) ["sqlstate"]=> string(5) "HY000" ["error"]=> string(26) "MySQL server has gone away" } } ["sqlstate"]=> string(5) "HY000" ["id"]=> int(1) } 

は私のDBクラスは、このようになります。

+0

「エコー」の代わりに1つのエントリを読み込み、$ ret [] = $ row; '関数を呼び出してその値を変数に代入し、その変数を出力して何が来るのかを確認しますか? –

+0

私はすでに '致命的なエラー:whileループがある行であるfile.phpの15行目のbooleanでfetch_assoc()メンバ関数を呼び出します。 – Sabbertran

+1

静的メソッド内で' self :: $ connection '静的プロパティにアクセスします。あなたの "getConnection()"メソッドはすべての呼び出しで新しい接続を作成します –

答えて

0

よしでこのエラーの詳細を読むことができ、私はこの問題を考え出しました。 何とか私は準備/実行時に同じmysqliオブジェクトに取り組んでいませんでした。

一時的にオブジェクトを保存すると問題が解決しました。

0

エルロ、メイト。

var_dump()でわかるように、results()メソッドはエラーを返すため、falseを返します。 「MySQLサーバーがなくなった」というエラーは、通常、クエリ中に接続が失われたときに発生します。

あなたはMySql site.

+0

私はちょうどそのようなことについて考えましたが、小さな挿入ステートメント( 'DB :: getConnection() - > query(" INSERT INTO features識別子、機能)VALUES( 'game'、 'abc'、 'ABC') ");')関数の先頭に移動します。 – Sabbertran

関連する問題