0

我正在处理 PHP 中的 mysqli 库似乎没有返回长文本列的问题。我可以使用控制台和 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 返回一个值。——是不是很奇怪?

有什么我做错了吗?

4

1 回答 1

3

根据 php.net 上的这个答案,您必须在绑定结果之前使用mysqli_stmt::store_result

当使用 prepare 准备语句来检索 LOB时,方法顺序很重要。此外,必须调用方法“store_result()”并以正确的顺序调用。不遵守这一点会导致 PHP/MySQLi 崩溃或返回错误值

这个

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

应该修复它。

于 2013-01-17T17:14:17.217 回答