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 に答える