2016-06-18 12 views
1

その結果、私は、次の機能があります。PHPプリペアドステートメントは、オブジェクトので

private function getUserData($user_nickname) 
{ 
    if ($this->databaseConnection()) { 

     $stmt1=$this->dbh->prepare('SELECT * FROM users WHERE nickname = ?'); 
     $stmt1->bind_param('s', $user_nickname); 
     $stmt1->execute(); 

     return $stmt1->fetch_object(); 
    } 
    else { 
     return false; 
    } 
} 

をそして、私は次のエラーを取得:致命的なエラー:不明なエラー:未定義のメソッドmysqli_stmtに呼び出し:: fetch_object()

私は少し研究を行なったし、私は任意の http://php.net/manual/en/class.mysqli-stmt.php

mysqli_stmtでオブジェクトをフェッチ見つけられませんでした、それは私が準備されたステートメントを使用している場合、私はオブジェクトとして結果を使用することができないことを意味していますか?私は本当にそれがオブジェクトとして動作するようにします。

P.S.私はmysqliを使用します。

+0

を書き込むことができ、言います。 fetch_object()がmysqli_resultの一部であるため、 'execute'の後に$ result-> fetch_object()を返します。 http://php.net/manual/en/mysqli-result.fetch-object.php –

答えて

2

Mysqliはあまり使用できないAPIです。

get_result()を試すことができますが、ご使用のシステムでは使用できない可能性があります。

私はあなたの代わりにmysqliののPDOを使用することをお勧めしてみましょう:mysqliの上の他の利点の中で

private function getUserData($user_nickname) 
{ 
    $stmt = $this->dbh->prepare('SELECT * FROM users WHERE nickname = ?'); 
    $stmt->execute([$user_nickname]); 
    return $stmt->fetch(PDO::FETCH_OBJ); 
} 

、PDOはコンストラクタにパラメータを渡し、匿名stdObjectしかしcan create an instance of an existing classないだけを返すことができます。あなたがUserクラスを持っている場合、あなたは)あなたは `$結果= $ stmt1-> get_result(のような何かを行うことができるはず

private function getUserData($user_nickname) 
{ 
    $stmt = $this->dbh->prepare('SELECT * FROM users WHERE nickname = ?'); 
    $stmt->execute([$user_nickname]); 
    return $stmt->fetchObject('User'); 
} 
+0

私の投稿に重複があり、そこに答えが見つかりました:http://stackoverflow.com/questions/1976433/is-使用可能なmysqli-prepared-with-prepared-statementを使用してフェッチすることができます。そして、あなたはget_result()を使うことができます。 –

関連する問題