Я пытаюсь проверить, соответствует ли строка одному из полей в определенном столбце таблицы. Для этого мне нужно получить все строки из объекта результата. Я использую php 5.2.x, поэтому не могу использовать метод fetch_row_all
; вместо этого я пытаюсь создать новый массив, который будет содержать все строки.
Вот мой код:
$sql = new mysqli($config['host'],$config['user'],$config['pass'],$config['db_name']); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $query = "SELECT domain FROM services"; $result = $sql->query($query); while($row = $result->fetch_row()); { $rows[]=$row; } $result->close(); $sql->close(); return $rows;
$rows
должен быть новым массивом, который содержит все строки, но вместо этого я получаю пустой массив.
Есть идеи, почему это происходит?
У вас была небольшая проблема синтаксиса, а именно ошибочная полуточка.
while($row = $result->fetch_row());
Обратите внимание на запятую в конце? Это означает, что следующий цикл не выполнялся в цикле. Избавься от этого, и он должен работать.
Кроме того, вы можете проверить, действительно ли запрос работает:
$sql = new mysqli($config['host'], $config['user'], $config['pass'], $config['db_name']); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit; } $query = "SELECT domain FROM services"; $result = $sql->query($query); if (!$result) { printf("Query failed: %s\n", $mysqli->error); exit; } while($row = $result->fetch_row()) { $rows[]=$row; } $result->close(); $sql->close(); return $rows;