Mysqli查询返回一个空字符串

时间:2013-01-17 16:56:34

标签: php mysqli

我正在处理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不是吗?

我有什么问题吗?

1 个答案:

答案 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);

应该修复它。