2012-01-29 60 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); 

試圖獲取數組,但得到以下錯誤的最後一行爲PHP Fetch_array替代準備語句

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

不能得到它的工作。請幫忙

+0

DB接口是什麼?庫MySQLi? – deceze 2012-01-29 01:24:59

+0

$結果是什麼?嘗試迴應它? – Hamish 2012-01-29 01:25:49

+0

不知道答案,但嘗試使用$ stmt而不是$ result ... – SolidSnake 2012-01-29 01:26:49

回答

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

PDO給出爲此這個美麗的功能。

編輯:我以爲這是PDO接口。爲什麼你不使用pdo?我覺得它比mysqli舒服。

0

mysqli_stmt::execute不返回結果,只有truefalse。您從mysqli_stmt對象本身獲取結果。請仔細閱讀http://php.net/manual/en/mysqli-stmt.execute.phphttp://php.net/manual/en/mysqli-stmt.fetch.php的示例。

+0

請看看羅伯特·皮茨回答http://stackoverflow.com/questions/5679600/fetch-array-with-prepared-statement-php-mysql – heron 2012-01-29 01:33:23

+1

好吧,看看手冊。 'mysqli_stmt :: execute'不返回一個對象。 – deceze 2012-01-29 01:35:44

0

隨着get_result()可以從執行的語句得到一個結果:

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

請查看更新的問題:修改您的建議。沒有什麼改變 – heron 2012-01-29 01:46:31

+0

如果我想得到第n個結果怎麼辦? MySQLi已經啓動。 – g33kz0r 2013-11-01 21:43:25