json_encode没有返回任何内容

时间:2015-09-19 20:10:21

标签: php mysql json

我正在尝试将我的MYSQL表数据转换为JSON。我正在尝试使用json_encode()。但它不起作用。它没有返回任何东西。我检查了控制台,甚至没有抛出任何错误。我错过了什么?

<?php
    //open connection to mysql db
    $connection = mysqli_connect("localhost","root","","maps") or die("Error " . mysqli_error($connection));

    //fetch table rows from mysql db
    $sql = "select * from locations";
    $result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));

    //create an array
    $emparray[] = array();
    while($row =mysqli_fetch_assoc($result))
    {
        $emparray[] = $row;
    }
    echo json_encode($emparray);

    //close the db connection
    mysqli_close($connection);
?>

5 个答案:

答案 0 :(得分:9)

试试这个

while ( $row = $result->fetch_assoc() ){
    $emparray[] = json_encode($row);
}
echo json_encode( $emparray );

while($row =mysqli_fetch_assoc($result))
{
   $emparray[] = json_encode($row);
}
echo json_encode($emparray);

$emparray = $result->fetch_all( MYSQLI_ASSOC );
echo json_encode( $emparray );

而不是

 while($row =mysqli_fetch_assoc($result))
    {
        $emparray[] = $row;
    }
    echo json_encode($emparray);

答案 1 :(得分:9)

我知道这已经过时了,但我没有找到这个错误的解释,在我的情况下,问题是用重音标记(Ej:cafetería)保存数据库上的值。 var_dump($ emparray)certanly显示信息,但echo json_ecode($ emparray)什么也没显示。解决方案?

这是我的数据库连接:

$connection = mysqli_connect('ip,'user','pass','dbname') or die("Error " . mysqli_error($connection));

只需要添加正确的字符集:

mysqli_set_charset( $connection, 'utf8');

为其他人解决这项工作。

答案 2 :(得分:2)

我有同样有趣的问题(使用PDO),在我的情况下,它有助于添加UTF-8设置查询 - 两者之一:

realtimez++

答案 3 :(得分:1)

添加此行,它将正常工作:

mysqli_set_charset($conn, 'utf8');

答案 4 :(得分:0)

我有类似的问题,但是当我尝试上面的解决方案时,它返回了一个类似JSON的字符串的一维数组,而不是二维数组。我通过在每个元素上运行$.parseJSON(jQuery)来解决它。