【问题标题】:pdo/json longtext sometimes return as nullpdo/json longtext 有时返回为 null
【发布时间】:2014-06-21 05:48:52
【问题描述】:

我有一个表格,其中包含从 pdf 文件页面中提取的内容(每页单独的行)。 它工作正常,但即使内容存在于表格行中,我的一些结果也会返回为 null?为什么有些返回为 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));

附上截图。

添加长度属性后

【问题讨论】:

  • get_class(new PageVO())
  • 使用var_dump 查看您使用json_encode 序列化的对象的实际值(实际上很奇怪,您使用的是某种中间类型而不是普通类型这类任务的数组)
  • “什么都看不到” --- “什么”是什么意思?一个空白屏幕?你知道json_encode只处理utf-8编码数据吗?
  • @user2727195:它不是原始的(请参阅有问题的数据),因为它是 json_encodable 没有任何问题:ideone.com/6H2Eya 您有可能没有复制一些不可见的(或损坏的)utf-8 字符。
  • @user2727195:“我的数据库是 utf-8 默认排序规则”——编码与排序规则无关。这就是字符的比较方式(是的,所有字符集/编码的东西都很复杂)

标签: php mysql json pdo longtext


【解决方案1】:

发生这种情况是因为您的某些字符串未正确utf-8 编码。

在这种情况下,json_encode 返回null

【讨论】:

  • 我该如何对它们进行编码,内容实际上是通过 pdftotext 从 pdf 文件中提取的,存储在 .txt 文件中,然后提交到数据库。
  • @user2727195:这取决于。首先 - 找出问题所在,然后才能想出解决方案。
  • @user2727195 我首先要确保您在数据库连接中使用 UTF-8 编码。你的 PDO 构造函数 dsn 应该有 ;charset=utf8
  • @user2727195:什么“它”?您是否注意到 Phil 没有在编码名称中使用破折号?
  • @user2727195:首选DSN解决方案
猜你喜欢
  • 1970-01-01
  • 2012-05-03
  • 2011-12-01
  • 2016-12-28
  • 2020-05-13
  • 2020-07-10
  • 1970-01-01
  • 2015-10-04
  • 2017-02-27
相关资源
最近更新 更多