【发布时间】:2017-01-01 14:01:35
【问题描述】:
我正在尝试制作一个简单的 PHP 脚本,该脚本从我的 MySQL 数据库中获取一个表并将结果编码为 JSON,以便稍后在 Java 中使用它们。
这是我的代码:
<?php
$servername = "localhost:3036";
$username = "example_user";
$password = "example_password";
$conn = mysql_connect($servername, $username, $password);
if(! $conn) {
die("Could not connect: " . mysql_error());
}
$sql = "SELECT * FROM table_name";
mysql_select_db("database_name");
$retval = mysql_query($sql, $conn);
if(! $retval) {
die("Could not get data: " . mysql_error());
}
while($row = mysql_fetch_assoc($retval)) {
$output[]=$row;
}
print(json_encode($output));
mysql_close($conn);
?>
这只是给出一个空白页作为输出(错误消息被设置为显示)。
但是,如果我将json_encode($output) 更改为json_encode($output[0])(或数组范围内的任何其他数字),则输出将变为$row array。
这可能是一个非常愚蠢的问题,但经过大约 3 小时的研究后,我已经束手无策了。感谢您的帮助。
【问题讨论】:
-
使用 print_r() 或 var_dump() 检查数组变量。
-
根据 phpinfo(),我使用的是 v. 5.6.23-0+deb8u1。 MySQL 部分工作正常,但我还是会尝试更改它,谢谢。
-
使用 json_last_error 检查 json_encode 是否有错误。 php.net/manual/en/function.json-last-error.php
-
“500 内部服务器错误”状态码(或空白页)表示您的脚本正在抛出错误,但您尚未配置 PHP 以显示错误消息。这是您在更进一步之前需要解决的问题,因为如果没有错误消息的帮助,很难正确编码。错误报告拇指规则是在开发中显示并在生产中登录。作为起点,我建议您在开发和调整
error_reporting和display_errors指令 (details here) 的计算机中编辑系统范围的php.ini文件。
标签: php mysql arrays json multidimensional-array