我目前坚持使用一些PHP代码。我想访问我的数据库中的表并以JSON格式检索数据。因此,我尝试了以下代码:
<?php
$con = mysqli_connect("......","username","pwd","DBName");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT * FROM users";
if ($result = mysql_query($con, $sql))
{
$resultArray = array();
$tempArray = array();
while($row = $result->fetch_object())
{
$tempArray = $row;
array_push($resultArray, $tempArray);
}
echo json_encode($resultArray);
}
mysqli_close($con);
?>
然而,它让我得到一个空白页面。它曾经工作过一次,但只有表格中有一个特殊数量的行,所以效率不如你想象的那么高。
有没有人知道为什么我会得到那些奇怪的结果?
编辑1:
我只是想把它添加到我的代码中:
echo json_encode($resultArray);
echo json_last_error();
它还给了我5.这似乎是我表中数据编码的错误。因此我添加了该代码:
$tempArray = array_map('utf8_encode', $row)
array_push($resultArray, $tempArray);
我得到以下输出:[null,null,null] 0(零来自echo json_last_error();)
所以我在这里,有人可以帮助我吗?
答案 0 :(得分:1)
我首先将if ($result = mysql_query($con, $sql))
更改为if ($result = mysqli_query($con, $sql))
,因为它们是不同的数据库扩展
另一件事是将while($row = $result->fetch_object())
更改为while ($row = mysqli_fetch_object($result)) {
(程序风格与面向对象的风格)
如果您仍然看到空白屏幕,请尝试在脚本顶部添加error_reporting(E_ALL);
,然后您就能确切知道错误的位置
答案 1 :(得分:0)
[arg...]
答案 2 :(得分:0)
这段代码适合我,试试看:
<?php
$con = mysqli_connect("......","username","pwd","DBName");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT * FROM users";
if ($result = mysqli_query($con, $sql))
{
while($row = $result->fetch_object())
{
$resultArray[] = $row;
}
echo json_encode($resultArray);
}
mysqli_close($con);
?>
编辑1:
作为测试替换此代码:
while($row = $result->fetch_object())
{
$resultArray[] = $row;
}
echo json_encode($resultArray);
使用此代码:
while($row = $result->fetch_assoc())
{
print_r($row);
}
你得到什么输出?
答案 3 :(得分:0)
我终于找到了解决方案!这确实是一个编码问题,json_encode()函数只接受在utf8中编码的字符串。我将我的表的interclassement更改为utf8_general_ci,并修改了我的代码如下:
<?php
//Create Database connection
$db = mysql_connect(".....","username","pwd");
if (!$db) {
die('Could not connect to db: ' . mysql_error());
}
//Select the Database
mysql_select_db("DBName",$db);
//Replace * in the query with the column names.
$result = mysql_query("SELECT * FROM users", $db);
//Create an array
$json_response = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$row_array['id'] = $row['id'];
$row_array['name'] = utf8_encode($row['name']);
$row_array['lastName'] = utf8_encode($row['lastName']);
//push the values in the array
array_push($json_response,$row_array);
}
echo json_encode($json_response);
//Close the database connection
fclose($db);
?>
我得到了预期的输出。