Допустимый объем памяти 2147483648 байт исчерпан - PullRequest
1 голос
/ 16 июня 2020

Неустранимая ошибка: разрешенный размер памяти 2147483648 байт исчерпан (попытался выделить 20480 байт) в строке 52 (ошибка все еще возникает, даже если я установил 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;

  }

1 Ответ

1 голос
/ 16 июня 2020

Не используйте while l oop. Вы только что создали бесконечное l oop, потому что вы присваиваете одну переменную другой каждый раз, когда вы l oop, не меняя условия. Вам вообще не нужен al oop, но если вам по какой-то причине нужен al oop, тогда вам нужно использовать 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;

Вам не нужен al oop в вашем коде вообще. Просто получите все в одном go.

$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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...