Php pdo/json longtext有时返回空值

Php pdo/json longtext有时返回空值,php,mysql,json,pdo,longtext,Php,Mysql,Json,Pdo,Longtext,我有一个从pdf文件逐页提取内容的表(每个页面有单独的行)。 它可以正常工作,但即使表行中存在内容,我的一些结果也会返回为null?为什么有些返回为空 $q = isset($_REQUEST['q']) && $_REQUEST['q'] != "" ? $_REQUEST['q'] : null; $statement = $this->connection->prepare("SELECT number, content FROM page WHERE fol

我有一个从pdf文件逐页提取内容的表(每个页面有单独的行)。 它可以正常工作,但即使表行中存在内容,我的一些结果也会返回为null?为什么有些返回为空

$q = isset($_REQUEST['q']) && $_REQUEST['q'] != "" ? $_REQUEST['q'] : null;

$statement = $this->connection->prepare("SELECT number, content FROM page WHERE folio_id = :folio_id AND content LIKE :q");
$statement->setFetchMode(\PDO::FETCH_CLASS, get_class(new PageVO()));

if($statement->execute(array("folio_id" => $folio_id, "q" => "%" . $q . "%"))) {
    return $statement->fetchAll();
}
在我的输出文件中

header('Content-type: application/json');
echo json_encode(array("search" => $searchVO));
附上截图。

添加长度属性后
发生这种情况是因为您的某些字符串未正确编码
utf-8


在这种情况下,
json\u encode
返回
null

get\u类(new PageVO())
使用
var\u dump
查看序列化对象的实际值
json\u encode
(对于这种任务,使用某种中间类型而不是普通数组,这实际上很奇怪)“看不到任何东西”——你说“任何东西”是什么意思?一个空白屏幕?你知道
json_encode
只处理
utf-8
encoded数据吗?@user2727195:它不是原始的(请看有问题的数据),因为它是json_编码的,没有任何问题:有可能你没有复制一些不可见(或损坏)的数据utf-8字符。@user2727195:“我的数据库是utf-8默认排序规则”-编码与排序规则无关。它只是字符的比较方式(是的,所有字符集/编码的东西都很复杂)如何对其进行编码,内容实际上是通过pdftotext从pdf文件中提取的,存储在.txt文件中,然后提交到数据库。@user2727195:这取决于情况。首先-找到损坏的内容,然后就可以想出解决方案。@user2727195我首先要确保您在数据库连接中使用UTF-8编码操作。您的PDO构造函数
dsn
应该具有
;charset=utf8
@user2727195:什么“it”?您注意到Phil没有在编码名称中使用破折号吗?@user2727195:首选dsn解决方案