我正在处理PHP中的mysqli库似乎没有返回longtext列的问题。我可以使用控制台和PHPMyAdmin获取列的值,但mysqli只返回一个空字符串。
这是我正在使用的功能:
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 :(得分:3)
根据php.net上的answer,你必须在绑定结果之前使用mysqli_stmt::store_result
使用prepare为检索LOB 准备语句时,方法顺序很重要。 此外,必须调用方法'store_result()'并按正确顺序调用。 如果不遵守此规则会导致PHP / MySQLi崩溃或返回错误值。
这个
$greetings->execute();
$greetings->store_result();
$greetings->bind_result($gr_data, $gr_name);
应该修复它。