我正在使用下面的代码生成JSON,在本地WAMP服务器上正常工作。但是当我将文件导出到WEB时,脚本只在SELECT中生成带有几个bank的json,如果查询结果大于10,则不会产生任何东西,本地服务器上的东西不会发生。
有人有这个问题吗?编辑PHP.ini文件会是什么情况吗?
<?php
//open connection to mysql db
$connection = mysqli_connect("localhost","root","123","vendas") or die("Error " . mysqli_error($connection));
//fetch table rows from mysql db
$sql = "SELECT * FROM os WHERE id_user = 15 and data_conclusao = '2017-03-02'";
$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 :(得分:0)
检查您的数据是否包含UTF-8字符。如果是,请尝试通过以下方式替换您的代码:
{{1}}
答案 1 :(得分:0)
json_encode
是一个非常静音的函数,如果在编码时出现任何问题,它只返回false而没有错误消息。如果您确定$emparray
确实包含所需数据,则下一个调试步骤是使用json_last_error(),这将有助于您了解其中发生的情况。
此类行为的一个常见原因是输入字符串中的不可编码字符,或者通常是那里出现的二进制序列号。但是,只有在解码错误消息时才能学习它 - 遵循我提供的参考。
答案 2 :(得分:0)
You could encode each row, one row at a time instead of encoding it in one big operation.
$db=mysql_connect($host, $username, $password) or die('Could not connect');
mysql_select_db($db_name, $db) or die('');
$result = mysql_query("SELECT * from listinfo") or die('Could not query');
if(mysql_num_rows($result)){
echo '{"testData":[';
$first = true;
$row=mysql_fetch_assoc($result);
while($row=mysql_fetch_row($result)){
// cast results to specific data types
if($first) {
$first = false;
} else {
echo ',';
}
echo json_encode($row);
}
echo ']}';
} else {
echo '[]';
}
mysql_close($db);