У меня есть база данных с 5 столбцами и несколькими строками. Я хочу получить первые 3 строки и повторить их как массив. Пока я могу получить только первую строку (я новичок в PHP и mysql). Вот мой PHP:
//==== FETCH DATA $result = mysql_query("SELECT * FROM $tableName"); $array = mysql_fetch_row($result); //==== ECHO AS JSON echo json_encode($array);
Помощь будет высоко оценена.
Вы должны просмотреть результаты. mysql_fetch_row
получает их по одному.
http://php.net/manual/en/function.mysql-fetch-row.php
Код будет выглядеть следующим образом:
$jsonData = array(); while ($array = mysql_fetch_row($result)) { $jsonData[] = $array; } echo json_encode($jsonData); //json_encode()
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ Расширение mysql устарело в PHP 5.5, как указано в комментариях, которые вы должны использовать mysqli или PDO. Вы бы просто заменили mysqli_fetch_row
в коде выше. http://www.php.net/manual/en/mysqli-result.fetch-row.php
Мне нравится это при запросе соединения базы данных ODBC с PHP 5.5.7, результаты будут в формате JSON:
$conn = odbc_connect($odbc_name, 'user', 'pass'); $result = odbc_exec($conn, $sql_query);
Получение результатов, позволяющих редактировать поля:
while( $row = odbc_fetch_array($result) ) { $json['field_1'] = $row['field_1']; $json['field_2'] = $row['field_2']; $json['field_3'] = $row['field_1'] + $row['field_2']; array_push($response, $json); }
Или, если я не хочу ничего менять, я мог бы упростить так:
while ($array = odbc_fetch_array($result)) { $response[] = $array; }
Что делать, если я хочу вернуть результаты в формате JSON ?, easy:
echo json_encode($response, true);
Вы можете изменить odbc_fetch_array для mysqli_fetch_array для запроса mysql db.
Согласно документации PHP mysql_fetch_row
(кроме того, она устарела, и вы должны использовать mysqli или PDO)
Возвращает числовой массив, соответствующий выбранной строке, и перемещает указатель внутренних данных вперед.
поэтому вам нужно, например, цикл while для извлечения всех строк:
$rows = array(); while ($row = mysql_fetch_row($result)) { $rows[] = $row; } echo json_encode($rows);
Я оставлю это вам, как только получить 3 строки 🙂
Вы должны поместить это в какой-то цикл, mysql_fetch_row возвращает результаты по одному.
Пример: http://www.php.net/manual/en/mysqli-result.fetch-row.php#example-1794