我正在将一个 php 应用程序转换为 zend 框架并利用 Zend_Db_Table 进行查询。我的问题是,在转换为 zend 格式后,我对文本格式字段的预期结果返回一个空字符串而不是存储的数据。
文本字段长度为 11000 的记录总是返回空,但是另一个长度为 2500 的记录总是正确返回。
有什么我需要配置的吗?使用 zend db 表返回的数据是否有限制?
PHP MySQL 使用 mysqli,返回 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'] 等于“我得到了...的副本”(11000 个字符/长度)
Zend 使用 pdo_mysql,返回 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 中调试时观察变量时显示为空。正如预期的那样,变量的 var_dump 实际上显示了数据。问题是当我使用 JSON 助手将数组作为 json 返回时。查看 json_last_error() 时,它返回 5,JSON_ERROR_UTF8。
我的数据库字符集是 UTF-8,但是为了解决这个问题,我必须在将其传递给 json 助手之前执行 utf8_encode($result['m_content']) :/