php - Zend_Db_Table Select missing data,直接PHP查询ok

标签 php mysql mysqli zend-framework zend-db-table

我正在将 php 应用程序转换为 zend 框架并利用 Zend_Db_Table 进行查询。 我的问题是,在转换为 zend 格式后,文本格式字段的预期结果返回一个空字符串而不是存储的数据。

文本字段长度为 11000 的记录始终返回空,而另一条长度为 2500 的记录始终正确返回。

我需要配置什么吗?使用 zend db table 返回的数据是否有限制?

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 中调试时观察变量时它显示为 null。 正如预期的那样,变量的 var_dump 实际上显示了数据。 问题是当我使用 JSON 帮助程序将数组作为 json 返回时。 在查看 json_last_error() 时,它返回了 5,JSON_ERROR_UTF8。

我的数据库字符集是 UTF-8,但是为了解决这个问题,我必须在将它传递给 json 助手之前执行 utf8_encode($result['m_content']) :/

最佳答案

对于你的上次更新,试试这个,所以你的连接实际上是 UTF-8。

$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$this->_db->query("SET NAMES 'utf8'");

关于php - Zend_Db_Table Select missing data,直接PHP查询ok,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10183011/

相关文章:

php - Codeigniter RESTful 建模和 Controller

php - 将 'x' 30 分钟 block 添加到时间字符串 (javascript)

php - prepare() 输出 bool false,语句对我来说看起来是正确的

php - mysqli_multi_query何时停止执行?

使用来自另一个查询的关联的 PHP 查询

php - 在php codeigniter中发送电子邮件到gmail

javascript - PHP判断客户端请求的dataType或responseType

mysql - 从表中删除除一个和其他之外的重复项

php - php第二次调用过程出错

mysql - MySQL中用IF条件触发