我目前正在使用 mysqli_query(使用免费套餐上的 Amazon EC2 实例)在 PHP 中运行查询,我对结果进行 json_encoding 并返回它们。由于某种原因,如果我不对返回的查询结果数量设置限制(或将限制设置为超过 158 个结果),则数组将返回“0”。但是,如果我确实设置限制 <= 158 个结果,则所有结果都会在数组中正确返回。代码如下:
function pullFriendData() {
$userID = $GLOBALS['userID'];
$userArray = array();
$query = "SELECT * FROM `User` WHERE `userID` in (SELECT `friendID` FROM `UserFriends` WHERE `userID` = '" . $userID . "'";
if ($query_result = mysqli_query($GLOBALS['con'], $query)) {
while ($row = $query_result->fetch_assoc()) {
$row = convertUserToInt($row);
array_push($userArray, cleanse($row));
}
} else {
echo "[pullFriendData]: Issue with finding friends of given user";
}
return json_encode($userArray);
}
非常奇怪的行为 - 有人遇到过这种情况吗?这是 PHP 问题还是 EC2 问题?还应该注意的是,我在各个表上运行了几个其他查询,这些查询毫无问题地返回数百个结果。
最佳答案
原来这是因为 json_encode 在重音字符上中断,而我的一个查询结果(正好在位置 160)恰好包含一个重音字符
关于PHP mysqli_query 返回 0 除非我限制查询结果的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25979999/