2013-01-17 53 views
0

我正在處理PHP中的mysqli庫似乎沒有返回longtext列的問題。我可以使用控制檯和PHPMyAdmin獲取列的值,但mysqli只返回空字符串。Mysqli查詢返回一個emptry字符串

下面是我使用的功能:

public function greetings_get() { 
     $output = array(); 
     $greetings_query = "SELECT `engagement_data`.`data`, `engagement_users`.`name` FROM `engagements`, `engagement_data`, `engagement_users` WHERE `engagements`.`promo_slug` = 'stod2.hm2013' and `engagements`.`user_fbid` = `engagement_users`.`fbid` and `engagement_data`.`engagement_id` = `engagements`.`id` ORDER BY RAND() LIMIT 0,5"; 
     $greetings = $this->db_connection->prepare($greetings_query); 
     $greetings->execute(); 
     $greetings->bind_result($gr_data, $gr_name); 
     while ($greetings->fetch()) { 
       $output[] = array('message' => $gr_data, 'name' => $gr_name); 
     } 
     return $output; 
} 

在這種情況下,$ gr_data是一個空字符串,而$ gr_name返回一個值。 -Strange不是嗎?

有什麼我做錯了嗎?

+0

請爲了後代的愛;使用明確的'JOIN' – Kermit

+0

爲什麼不使用異常或'die()'來讀取mysqli必須對錯誤進行說明? – samayo

+0

如果使用http://php.net/manual/en/mysqli-stmt.get-result.php而不是[醜陋]綁定怎麼辦? –

回答

3

根據這一answer在php.net,你必須使用mysqli_stmt::store_result綁定結果之前

當使用準備準備語句檢索的LOB方法秩序問題。 此外,必須調用方法'store_result()'並按正確的順序調用。 未注意到此事件導致PHP/MySQLi崩潰或返回錯誤值

$greetings->execute(); 
$greetings->store_result(); 
$greetings->bind_result($gr_data, $gr_name); 

應該修復它。

+0

修復它!謝謝一堆! – aldavigdis

+0

非常感謝你 - 花了這麼長時間才解決。 –