Php Echo json_encode在某些实例上不起作用
我目前正在使用php向我的网页回显json响应,在某些实例上遇到了问题。不过,我不知道是什么原因造成的。我使用的sql语句如下所示:Php Echo json_encode在某些实例上不起作用,php,json,Php,Json,我目前正在使用php向我的网页回显json响应,在某些实例上遇到了问题。不过,我不知道是什么原因造成的。我使用的sql语句如下所示: "SELECT * FROM table WHERE id = $id LIMIT 20 OFFSET $offset" 当用户切换页面时,唯一改变的是$offset。我有8页的数据,第7页和第8页都不返回数据,而其他所有页面都返回数据。当我将此sql语句复制到数据库中进行测试时,它会正确检索数据 下面是我如何尝
"SELECT *
FROM table
WHERE id = $id
LIMIT 20 OFFSET $offset"
当用户切换页面时,唯一改变的是$offset
。我有8页的数据,第7页和第8页都不返回数据,而其他所有页面都返回数据。当我将此sql语句复制到数据库中进行测试时,它会正确检索数据
下面是我如何尝试回显json的:
while ($row = mysqli_fetch_array($fetch, MYSQLI_ASSOC)) {
$row_array['id'] = $row['id'];
$row_array['title'] = $row['title'];
$row_array['description'] = $row['description'];
array_push($return_arr,$row_array);
//echo json_encode($return_arr); <-- this returns JSON
}
echo json_encode($return_arr);
while($row=mysqli\u fetch\u数组($fetch,mysqli\u ASSOC)){
$row_数组['id']=$row['id'];
$row_数组['title']=$row['title'];
$row_数组['description']=$row['description'];
数组推送($return\u arr,$row\u数组);
//echo json_encode($return_arr);是的,有。我认为可能发生的是,您的某些行包含非utf8编码字符。json_encode
失败如果发生这种情况,只返回false。您可以使用is_bool
进行检查
解决这个问题的一个简单方法是使用mysqli\u set\u字符集($dbc,'utf8'));
,尽管问题更为严重,您应该研究如何正确转换所有字符以避免丢失字节。如果我将行添加到后面,而它不会打印任何内容。如果我将行放入其中,它会打印任何内容-与echo相同-有什么想法吗?您建议的行与我的php代码相关?在顶部?Formysqli\u set\u charset
您可以在运行查询之前将其放入,因此,请在mysqli
声明之后立即执行。如果您无法检索到正确的编码,请使用简单的htmlentities()
关于数据应该有效是的。有人用俄语在我们的表中插入了数据,这就是为什么它不是json编码,因为PHP7.2你可以做json\u编码($data,json\u INVALID\u UTF8\u IGNORE)
来修复这个疯狂!
value
The value being encoded. Can be any type except a resource.
All string data must be UTF-8 encoded.