我正在尝试将我的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);
?>
答案 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)来解决它。