2012-01-29 5 views
1

UPDATE

 $stmt = $this->db->prepare(" 
SELECT u.id, u.fname, u.lname, u.mname, u.type, u.email, u.salt, 
     u.pass, u.salt,  u.approved, u.ban,  u2.status 
FROM `users` AS u 
    LEFT OUTER JOIN `log` AS u2 
     ON u2.user_id = u.id 
WHERE u.email = ? LIMIT 1") or die($this->db->error); 

     $stmt->bind_param("s", $_POST['email']) or die($stmt->error); 
     $stmt->execute(); 
     $stmt->store_result(); 
     if ($stmt->num_rows == 0) { 
      die($this->ajax->respond(7)); 
     } 
     $result = $stmt->get_result(); 
     $data = $result->fetch_array(MYSQLI_BOTH); 

配列を取得しようとしているが、それは仕事を得ることができない最後の行Fetch_array代替ステートメント

Fatal error: Call to a member function fetch_array() on a non-object 

ために、次のエラーを取得する準備しました。助けてください

+0

これはどのDBインターフェイスですか? MySQLi? – deceze

+0

$ resultとは何ですか?それをエコーし​​ようとしましたか? – Hamish

+0

答えは不明ですが、$ resultの代わりに$ stmtを使用しようとしました... – SolidSnake

答えて

0
$data = $stmt->fetchAll(); 

PDOは、その目的のために、この美しい機能を提供します。

編集:私はそれがPDOインターフェイスだと思った。なぜpdoを使用していないのですか?私はそれがmysqliより快適だと思う。

0

結果を返しませんtrueまたはfalseのみ返します。結果はmysqli_stmtオブジェクトから取得します。例を慎重にhttp://php.net/manual/en/mysqli-stmt.execute.phphttp://php.net/manual/en/mysqli-stmt.fetch.phpにお読みください。あなたが実行されたステートメントから結果セットを取得することができますget_result()

+0

Robert Pittsの回答をご覧くださいhttp://stackoverflow.com/questions/5679600/fetch-array-with-prepared-statement-php-mysql – heron

+1

さて、マニュアルを見てください。 'mysqli_stmt :: execute'はオブジェクトを返しません。 – deceze

0

$stmt->execute(); 
    $result = $stmt->get_result(); 
    while ($row = $result->fetch_array(MYSQLI_BOTH)) 
    { 
+0

更新された質問:あなたの提案によって修正されたコードを見てください。何も変更されていません – heron

+0

'n番目の結果を得たい場合はどうすればいいですか? MySQLiが完成しました。 – g33kz0r

関連する問題