【问题标题】:Convert mySQL database query to JSON in PHP [closed]在 PHP 中将 mySQL 数据库查询转换为 JSON [关闭]
【发布时间】:2016-08-01 20:21:54
【问题描述】:

我正在使用以下代码连接到我的本地数据库并从表中查询结果。以下代码无法以 JSON 格式打印我的结果。有什么我想念的吗?感谢您的帮助!

<?php

if (!$link = mysql_connect('localhost', 'root', 'root')) {
echo 'Could not connect to mysql';
exit;
}

if (!mysql_select_db('tm-charts', $link)) {
echo 'Could not select database';
exit;
}

$sql    = 'SELECT Name,status FROM Estimates';
$result = mysql_query($sql, $link);

if (!$result) {
echo "DB Error, could not query the database\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}

$rows = array();

while ($row = mysql_fetch_assoc($result)) {
 $rows[] = $row;
 }

echo json_encode($rows);

?>

【问题讨论】:

  • mysql_ 函数已弃用,不应再使用。话虽如此,我无法立即看到代码的问题。你有任何输出吗? var_dump($rows); 给了什么?
  • 从浏览器运行此脚本。您在页面输出中看到 JSON 字符串了吗?
  • @rjdown 感谢您的回复! var_dump($rows);从查询中返回名称和状态的数组。为什么当我使用 echo json_encode($rows); 时这没有转换为 JSON; ?另外,在我添加之前 var_dump();我的页面是死亡的白屏。
  • @riggsfolly 我应该运行哪个脚本?

标签: php mysql sql json


【解决方案1】:

更正:您的评论表明您正在获取编码数组,但您没有收到它作为 JSON,要解决此问题,您必须先设置标头:

header('Content-Type: application/json; charset=utf-8');

在调用标头函数之前不要进行任何输出,这一点很重要。不在 php 标签内的空行已经是输出(也在包含中)。


第二种可能性:某些单元格包含非法字符,然后json_encode 失败。

【讨论】:

  • 包括该代码,以及使用:mysql_set_charset("UTF8", $link);工作!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多