php - SQL 表中的 JSON 编码 -> JSON 问题

标签 php mysql json

我正在做一项学校作业,我必须将 Twitter 转储作为 SQL 并将其另存为 JSON(用于 D3)。但是,我在 JSON 编码方面遇到了一些问题。我能够正常获取日期、用户、转发、收藏夹,但由于某种原因,推文的实际文本仅编码为“文本”。我检查了表格,上面的所有内容看起来都是正确的,但由于某种原因,我的编码器没有正确编码文本。以下是我必须将 Twitter SQL 表编码为 JSON 的代码:

<?php
$dsn = 'mysql:host=localhost;dbname=twitter';
    define('MYSQL_USER','root');
    define('MYSQL_PASS','dismypassword');

$tweets = "SELECT `id`,`date`,`screen_name`,`favorite_count`,`favorited`,'text' as 'textThing' FROM tweets";

$sql = $tweets;

header("Content-Type: application/json");

try {
    $db = new PDO($dsn, MYSQL_USER, MYSQL_PASS);
    $statement = $db->prepare($sql);
    $statement->execute();
    $data = array();
    while ( ($row = $statement->fetch(PDO::FETCH_ASSOC)) ) {
        $data[] = $row;
    }
    echo json_encode($data);  
} catch (PDOException $e) {
    die('Query failed: ' . $e->getMessage());
}

?>

此操作的输出将生成一个如下所示的 JSON 文件(其中文本简单地显示为“文本”:

[

{
id: "704419321326510080",
date: "2016-02-29 22:33:48",
screen_name: "cscstars",
favorite_count: "0",
favorited: "0",
textThing: "text"
},

{
id: "704419329287331840",
date: "2016-02-29 22:33:50",
screen_name: "Wary12",
favorite_count: "0",
favorited: "0",
textThing: "text"
},

{
id: "704419365588865024",
date: "2016-02-29 22:33:58",
screen_name: "lgib15",
favorite_count: "0",
favorited: "0",
textThing: "text"
},

{
id: "704419366243151874",
date: "2016-02-29 22:33:59",
screen_name: "jacqui4peace",
favorite_count: "0",
favorited: "0",
textThing: "text"
},

最佳答案

我找到了问题的根源。导致函数失败的根本不是 JSON 编码器,而是推文文本中的特殊字符。在我清理 tweet sql 表后,该函数完美运行。

关于php - SQL 表中的 JSON 编码 -> JSON 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35857660/

相关文章:

php - Json_encode 改变我查询的顺序

PHP 读取 UTF-8 CSV

php - 查找列中的最高值,在该列中插入一个比该列高 1 个数字的新记录

php - Alpine Linux 上的甲骨文

mysql - SQL 外键命令不会执行

php - 在另一个 SQL 查询中执行一个 SQL 查询

json - index.ngfactory.ts 意外的标记,您可能需要适当的加载器来处理此文件类型

javascript - 获取 JSON 数组中前 5 个分数值

javascript - ajax post请求中传递第二个参数

php - 如何按年份过滤laravel 4.2 app中的所有查询结果