数据库连接中的Json编码问题

时间:2014-07-17 07:50:03

标签: php database mysqli json

当我尝试远程连接到数据库时,我遇到了一些问题,我会非常感谢任何提示。这是代码:

$con=mysqli_connect($port, $username, $password, $database);
$sql = "SELECT name, date FROM `view_tickets`;";
if ($result = mysqli_query($con, $sql))
{
    // If so, then create a results array and a temporary one to hold the data
    $resultArray = array();
    $tempArray = array();

    // Loop through each row in the result set
    while($row = $result->fetch_object())
    {
        // Add each row into our results array
        $tempArray = $row;
        array_push($resultArray, $tempArray);
    }

    // Finally, encode the array to JSON and output the results
    echo json_encode($resultArray);
    }
mysqli_close($result);
mysqli_close($con);

我想让json能够从移动应用程序运行它。目前浏览器上没有显示任何内容(我正在运行Xampp)。我添加了一些打印件,可以确认连接成功并正确填充阵列。我设法使用print_r(array_values($resultArray));

将其打印出来

我的json有问题吗?

我不知道这是否有帮助但注意到我收到了以下警告;

警告:mysqli_close()要求参数1为mysqli,第39行/Applications/XAMPP/xamppfiles/htdocs/www/service.php中给出的对象

这对应于mysqli_close($ result);

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

mysqli_close需要连接才能关闭,但您可以通过查询向该功能提供结果!

将其更改为

mysqli_close($con);

然后它应该工作,如果不只是评论

答案 1 :(得分:0)

以下是您的代码的优化版本。

请注意,tempArray被删除(不需要它)..

mysqli_close($ result)被替换为unset($ result),因为$ result不是连接对象。如果这是你的代码的结束,那么不需要取消设置,因为在脚本结束之后php会自动取消所有变量。

$con=mysqli_connect($port, $username, $password, $database);
$sql = "SELECT name, date FROM `view_tickets`;";
$resultArray = array();

if ($result = mysqli_query($con, $sql)) {
    // Loop through each row in the result set
    while($row = $result->fetch_object()){
        $resultArray[] = $row;
    }
}
unset($result);
mysqli_close($con);

// Finally, encode the array to JSON and output the results
echo json_encode($resultArray);

答案 2 :(得分:0)

我遇到了字符集编码的问题。数据库可以有不同的编码,确保它是utf8