使用php将大量mysql记录转换为json
Posted
技术标签:
【中文标题】使用php将大量mysql记录转换为json【英文标题】:Convert Large number of mysql records to json using php 【发布时间】:2018-01-02 16:41:51 【问题描述】:我想使用 PHP 将大量 MySQL 数据转换为 JSON。 我有 20K 及以上的记录,但我无法将 mysql 数据转换为 JSON。我想创建 REST API,所以需要以 JSON 格式发送(响应)数据。
我试过了,但没有得到输出:
代码:
$query = mysql_query("SELECT table1.field1, table1,field2, table1.field3, table2.field4 FROM table1 LEFT JOIN table2 ON table1.field1 = table2.field1"); $结果 = 数组(); 而($row = mysql_fetch_assoc($query)) $result[] = array('Name' => $row["field1"], 'Last Name' => $row['field2'], 'country' => $row["field3"], 'location' => $row["field4"]); 回声 json_encode($result);【问题讨论】:
不要使用 mysql_* 函数。使用 mysqli_* 或 PDO 函数 我用 mysqli 和 PDO 尝试了兄弟,但仍然没有得到输出 您的 SQL 语法有错误 -table1,field2
可能应该是 table1.field2
而不是 json 编码,var_dump 结果。我认为你有一些坏字符在那里破坏了 jsin_encode。
在此期间,在将数组添加到 $result 之前对数组进行 json_encode,然后打印该行的 id。最终它会在完成之前中断,这将是你的问题行。
【参考方案1】:
除了您的查询错误之外,我假设这只是您问题中的一个输入错误,因为没有人将他们的列标记为 field1、field2 等。
您面临的问题很可能是编码问题。尝试以下将结果编码为 UTF8 并有望生成有效的 JSON。
mysql_set_charset ("UTF8");
$query = mysql_query("SELECT table1.field1, table1field2, table1.field3, table2.field4 FROM table1 LEFT JOIN table2 ON table1.field1 = table2.field1");
$result = array();
while($row = mysql_fetch_assoc($query))
$result[] = array('Name' => $row["field1"], 'Last Name' => $row['field2'], 'country' => $row["field3"], 'location' => $row["field4"]);
echo json_encode($result);
【讨论】:
完成。我已经删除了坏字符。【参考方案2】:您的查询是错误的。改成
SELECT table1.field1, table1.field2, table1.field3, table2.field4 FROM table1 LEFT JOIN table2 ON table1.field1 = table2.field1
需要table1.field2
而不是table1,field2
【讨论】:
已修改。但没有得到输出 代码中有错误,在脚本的第一行写入ini_set("display_errors",1);
一段时间,这将在页面上显示错误。
@Arpita 建议启用错误。然后尝试解决它。
@Arpita。没有错误。【参考方案3】:
你有 mysql 查询语法错误。而不是table1,field2
使用table1.field2
【讨论】:
以上是关于使用php将大量mysql记录转换为json的主要内容,如果未能解决你的问题,请参考以下文章
使用 Json.net 将大量数据流式传输为 JSON 格式