致命错误:允许的2147483648字节的内存大小在第52行耗尽(尝试分配20480字节)(即使我将memory_limit设置为无穷大,该错误仍然发生)
$query= mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM users WHERE email='toluxy99@gmail.com'"));
while($row = $query){
$data[] = array(
'username'=> $row['username'], // Line 52
'email' => $row['email'],
'phone'=> $row['phone'],
'city'=> $row['city'],
'gender'=> $row['gender'],
);
}
if($query) $result = json_encode(array('success'=>true, 'data'=>$data));
else $result = json_encode(array('success'=>false, 'msg'=>mysqli_error($conn)));
echo $result;
}
不要使用while
循环。 您刚刚创建了一个无限循环,因为您在每次循环时都将一个变量赋给另一个变量,而不改变条件。 您根本不需要循环,但如果由于某种原因确实需要循环,则需要使用foreach
。
$query = $conn->query("SELECT * FROM users WHERE email='toluxy99@gmail.com'");
$data = [];
foreach ($query as $row) {
$data[] = [
'username' => $row['username'],
'email' => $row['email'],
'phone' => $row['phone'],
'city' => $row['city'],
'gender' => $row['gender'],
];
}
if ($data) {
$result = json_encode(['success' => true, 'data' => $data]);
} else {
$result = json_encode(['success' => false, 'msg' => 'No data available!']);
}
echo $result;
您的代码中根本不需要循环。 只要一次把所有东西都拿来就行了。
$query = $conn->query("SELECT * FROM users WHERE email='toluxy99@gmail.com'");
$data = $query->fetch_all(MYSQLI_ASSOC);
if ($data) {
$result = json_encode(['success' => true, 'data' => $data]);
} else {
$result = json_encode(['success' => false, 'msg' => 'No data available!']);
}
echo $result;