我目前正在使用php回应我的网页的json响应,并在某些情况下遇到问题.我无法弄清楚是什么导致了这一点.我使用的sql语句如下所示:
"SELECT *
FROM table
WHERE id = $id
LIMIT 20 OFFSET $offset"
Run Code Online (Sandbox Code Playgroud)
唯一改变的是$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);
Run Code Online (Sandbox Code Playgroud)
在除第7页和第8页之外的所有页面上,它返回正确的JSON,但由于某种原因,在这两个页面上,echo不执行任何操作.如果我将json放在我注释掉的循环中,它将为第7页和第8页返回正确的json,这是奇怪的.我在验证器中检查了json,它是有效的json.有没有办法检查错误或调试此错误?
q.T*_*hen 13
就在这里.我认为可能发生的是你的一些行包含非utf8编码的字符.json_encode
如果发生这种情况则失败,只返回false.你可以用一个来检查它is_bool
.
http://php.net/manual/en/function.json-encode.php
value
The value being encoded. Can be any type except a resource.
All string data must be UTF-8 encoded.
Run Code Online (Sandbox Code Playgroud)
解决这个mysqli_set_charset($dbc, 'utf8');
问题的一个天真的解决方案是,尽管问题更深入,你应该考虑正确转换所有字符以避免丢失字节.
归档时间: |
|
查看次数: |
11944 次 |
最近记录: |