【问题标题】:Mysqli query returns an emptry stringMysqli 查询返回一个空字符串
【发布时间】:2013-01-17 16:56:33
【问题描述】:

我正在处理 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 返回一个值。 ——是不是很奇怪?

是不是我做错了什么?

【问题讨论】:

标签: php mysqli


【解决方案1】:

根据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);

应该修复它。

【讨论】:

  • 非常感谢 - 花了这么长时间才修复。
猜你喜欢
  • 2013-09-14
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
  • 2023-02-23
  • 2019-10-29
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多