2

PHP アプリを zend フレームワークに変換し、Zend_Db_Table を使用してクエリを作成しています。私の問題は、zend 形式に変換した後、テキスト形式フィールドの予想される結果が、保存されたデータではなく空の文字列を返すことです。

テキスト フィールドの長さが 11000 のレコードは常に空を返しますが、長さが 2500 の別のレコードは常に正しく返されます。

設定する必要があるものはありますか? zend db テーブルを使用して返されるデータに制限はありますか?

mysqli を使用した PHP MySQL は true を返し、var には値があります

$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$stmt= "select * from m_message where m.m_id='".$m_id."'";
$result = $db->query($q_message);

$result['m_content'] equals "I got a copy of the ..." (11000 文字 / 長さ)

pdo_mysql を使用する Zend は true を返し、var には値がありません

$this->_db = Zend_Db_Table::getDefaultAdapter();
$stmt = $this->_db->query('SELECT m_content FROM m_message WHERE m_id = ? ', $messageId);
$result = $stmt->fetchAll();

$result['m_content'] 等しい (文字列)

$this->_db = Zend_Db_Table::getDefaultAdapter(); 
$stmt = $this->_db->select()->from('m_message', 'm_content')->where('m_id = ?',$messageId );
$result = $this->_db->fetchAll($stmt);

$result['m_content'] 等しい (文字列)

アップデート

Netbeans でのデバッグ中に変数を監視しているときに、null が表示されていたことが判明しました。変数の var_dump には、予想どおり、実際にデータが表示されました。問題は、JSON ヘルパーを使用して配列を json として返したときでした。json_last_error() を見ると、5、JSON_ERROR_UTF8 が返されました。

私の DB 文字セットは UTF-8 ですが、問題を解決するには、json ヘルパーに渡す前に utf8_encode($result['m_content']) を実行する必要がありました:/

4

1 に答える 1

0

最後の更新までに、これを試してください。接続は実際には UTF-8 です。

$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$this->_db->query("SET NAMES 'utf8'");
于 2012-07-11T08:57:48.760 に答える