我已经看到很多问题,但没有任何帮助。我想使用 PHP 将数据从数据库 (MySQL) 转换为 JSON。这是我的PHP代码:
初始化.php
<?php
$db_name = "webappdb";
$mysql_user = "root";
$mysql_pass = "root";
$server_name = "localhost";
$charset= "utf8";
$con = mysqli_connect($charset, $server_name, $mysql_user, $mysql_pass, $db_name);
?>
列表查看书籍.php
<?php
include("init.php");
header('Content-Type: application/json');
// get all items from user_info_book table
$sql = mysqli_query("SELECT * FROM `user_info_book`");
$res = mysqli_query($con,$sql);
$result = array();
while($row = mysqli_fetch_array($res)){
$output[] = $row;
}
echo json_encode($output);
echo json_last_error();
mysqli_close($con);
?>
错误是0
,所以没什么。
你的代码中有很多问题。对于初学者,你有这个:
$sql = mysqli_query("SELECT * FROM `user_info_book`");
$res = mysqli_query($con,$sql);
$sql
是成功的mysqli_result
对象或失败时的布尔false
对象。在这里,它是假的,因为你没有传递数据库链接($con
)。请参阅文档。你不应该、不需要、也不能将mysqli_query
的结果存储在变量 ( $sql
) 中,然后在另一个调用中将该变量传递给 mysqli_query
。只需做:
$sql = "SELECT * FROM `user_info_book`";
$res = mysqli_query($con, $sql);
此外,您初始化一个数组,然后添加到另一个数组:
$result = array();
while($row = mysqli_fetch_array($res)){
$output[] = $row;
}
也许你的意思是做$output = array();
?
您将受益于使用像PHPStorm这样的IDE。
您执行查询并将结果分配给$sql
:
$sql = mysqli_query("SELECT * FROM `user_info_book`");
但随后您再次查询并使用$sql
结果,就好像它是一个字符串一样:
$res = mysqli_query($con,$sql);
可能更多你在想什么:
$sql = "SELECT * FROM `user_info_book`";
$res = mysqli_query($con,$sql);
开发时应使用错误报告:
error_reporting(E_ALL);
ini_set('display_errors', '1');
你的代码很糟糕:
$sql = mysqli_query("SELECT * FROM `user_info_book`");
^---missing DB handle
^---query result handle
因此,$sql
成为失败的布尔false
,因为您没有正确调用查询函数。
然后盲目地使用此布尔值 false,就好像它是查询字符串一样:
$res = mysqli_query($con,$sql);
^---boolean false, due to previous errors
所以基本上,你假设你的代码是完美的,并且永远不会有任何问题,所以没有添加任何错误处理。由于您没有错误处理,因此您完全忽略了 DID 发生的错误。
永远不要假设成功 - 这段代码是为什么的完美例子。您的 sql 在语法上是完美的,但它失败了,因为您没有正确调用查询函数。
始终假设失败,检查失败,并将成功视为惊喜。
您初始化了一个名为 $result
的数组,但尝试使用具有尚未初始化的 $output
标识符的数组,PHP 不会为您自动初始化数组变量。这就是一个错误的来源。
我注意到的第二个错误是:
mysqli_query("SQL")
您忘记传入数据库连接资源,因为它应该是:
mysqli(db_connection, sql_query)
修复这些问题,然后如果您需要更多帮助,请在下面发表评论。
祝你今天开心。