Php Echo json_encode在某些实例上不起作用

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语句复制到数据库中进行测试时,它会正确检索数据 下面是我如何尝

我目前正在使用php向我的网页回显json响应,在某些实例上遇到了问题。不过,我不知道是什么原因造成的。我使用的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代码相关?在顶部?For
mysqli\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.