METANIT.COM

Php mysql массив строк

Для получения данных в MySQL применяется команда SELECT . Например, получение всех данных из таблицы Users:

Рассмотрим получение данных на примере таблицы Users, созданной в прошлых, которая имеет следующее определение:

CREATE TABLE Users (id INTEGER AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), age INTEGER)

Объектно-ориентированный стиль

При выполнении команды SELECT метод query() объекта mysqli возвращает набор полученных строк, который мы можем перебрать с помощью цикла. Например, перебор с помощью цикла foreach :

$sql = "SELECT * FROM Users"; if($result = $conn->query($sql)) < foreach($result as $row)< $userid = $row["id"]; $username = $row["name"]; $userage = $row["age"]; >>

Здесь $result представляет набор строк. Каждый его элемент, который передается в переменную $row , хранит данные отдельной строки в виде ассоциативного массива, где ключи элементов — названия столбцов.

Вместо цикла foreach также можно использовать другие виды циклов. Например, применение цикла while :

$sql = "SELECT * FROM Users"; if($result = $conn->query($sql))< while($row = $result->fetch_array()) < $userid = $row["id"]; $username = $row["name"]; $userage = $row["age"]; >>

В данном случае метод $result->fetch_array() выбирает текущую строку из набора в переменную $row и переходит к следующей. Когда строк не останется, метод возвратит false , и произойдет выход из цикда. Полученное значени $row опять же представляет строку в виде ассоциативного массива.

После окончания работы с полученным набором строк мы можем очистить отведенную для него память с помощью метода free() :

Теперь посмотрим на примере. Определим скрипт index.php , которая будет выводить значения из таблицы Users:

     

Список пользователей

connect_error)< die("Ошибка: " . $conn->connect_error); > $sql = "SELECT * FROM Users"; if($result = $conn->query($sql))< $rowsCount = $result->num_rows; // количество полученных строк echo "

Получено объектов: $rowsCount

"; echo ""; foreach($result as $row)< echo ""; echo ""; echo ""; echo ""; echo ""; > echo "
IdИмяВозраст
" . $row["id"] . "" . $row["name"] . "" . $row["age"] . "
"; $result->free(); > else< echo "Ошибка: " . $conn->error; > $conn->close(); ?>

Таким образом, при обращении к скрипту index.php браузер отобразит список данных, полученных из БД:

Получение данных из MySQL в PHP с помощью MySQLi

Дополнительно стоит отметить, что с помощью свойства $result->num_rows мы можем получить количество строк, извлеченных из БД.

Процедурный стиль

При процедурном стиле функция mysqli_query() при успешном выполнении команды SELECT возвращает набор строк, который можно перебрать с помощью цикла:

$sql = "SELECT * FROM Users"; if($result = mysqli_query($conn, $sql)) < foreach($result as $row)< $userid = $row["id"]; $username = $row["name"]; $userage = $row["age"]; >>

Как и при объектно-ориентированном подходе, полученные строки представляют ассоциативные массивы, где ключи элементов — названия столбцов.

Пример перебоа с помощью цикла while :

$sql = "SELECT * FROM Users"; if($result = mysqli_query($conn, $sql)) < while($row = mysqli_fetch_array($result))< $userid = $row["id"]; $username = $row["name"]; $userage = $row["age"]; >>

Функция mysqli_fetch_array() выбирает текущую строку из набора в переменную $row и переходит к следующей. Когда строк не останется, метод возвратит false , и произойдет выход из цикла.

После окончания работы с полученным набором строк мы можем очистить отведенную для него память с помощью функции mysqli_free_result() , в которую передается полученный набор строк:

     

Список пользователей

$sql = "SELECT * FROM Users"; if($result = mysqli_query($conn, $sql))< $rowsCount = mysqli_num_rows($result); // количество полученных строк echo "

Получено объектов: $rowsCount

"; echo ""; foreach($result as $row)< echo ""; echo ""; echo ""; echo ""; echo ""; > echo "
IdИмяВозраст
" . $row["id"] . "" . $row["name"] . "" . $row["age"] . "
"; mysqli_free_result($result); > else < echo "Ошибка: " . mysqli_error($conn); >mysqli_close($conn); ?>

Источник

Получение строки данных в виде массива. Функции mysqli_fetch_array() (или mysql_fetch_array())

Функция mysqli_fetch_array() (mysql_fetch_array()) используется для получения одной строки из результирующего набора, которую она помещает в массив. При этом можно получить как ассоциативный массив, так и массив с числовыми индексами. Кроме того, можно вернуть сразу оба типа массива, передав соответствующий параметр.

Так как функция mysql_fetch_array() сейчас является устаревшей и имеет статус «depricated», то рекомендуется в коде использовать ее модификацию — mysqli_fetch_array(). При этом разницы в использовании практически нет никакой.

Данную функцию можно использовать в «объектно-ориентированном» или «процедурном» стиле. Рассмотрим сначала «объектно-ориентированный» стиль. Допустим у нас имеется база данных «my_dbbase», в которой есть таблица «users». Из нее нам необходимо достать 10 строк (id пользователя и его имя) и вывести эти данные построчно:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
 //создаем и выполняем запрос к таблице пользователей $query = "SELECT id, name FROM users ORDER BY id LIMIT 10"; $result = $mysqli->query($query); //выводим данные while($row = $result->fetch_array()) < echo $row['id']." ".$row['name']."
"; > // очищаем result-объект $result->close(); // закрываем соединение $mysqli->close();

В данном примере мы использовали константу MYSQLI_ASSOC, чтобы получить данные в виде ассоциативного массива. Ключом при этом будет является название колонки в таблице. Если же нам нужен обычный массив с числовыми ключами, то можно использовать константу MYSQLI_NUM:

while($row = $result->fetch_array(MYSQLI_NUM)) < echo $row[0]." ".$row[1]."
"; >

Но в большинстве случаев использование ассоциативного массива все же более оправдано, т.к. код при этом становится более читабельным (мы четко видим, какой элемент мы используем). Единственное, о чем здесь нужно помнить, что если вы делаете выборку из нескольких таблиц одним запросом, то в случае совпадения имен колонок, они будут перетираться. В этом случае целесообразно использовать алиасы для колонок.

Существует и второй способ использования функции mysqli_fetch_array — процедурный:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
 //создаем и выполняем запрос к таблице пользователей $query = "SELECT id, name FROM users ORDER BY id LIMIT 10"; $result = mysqli_query($connectLink, $query); //преобразуем данные в ассоциативный массив, выводим их построчно while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) < echo $row['id']." ".$row['name']."
"; > // очищаем result-объект mysqli_free_result($result); // закрываем соединение mysqli_close($connectLink);

Каждый раз, когда мы выполняем

$row = mysqli_fetch_array($result, MYSQLI_ASSOC)

, то в $row помещается новая строка из выборки, а указатель в результирующей выборке при этом смещается на следующую строку. Таким образом, мы можем пройтись по всем строкам.

Какой способ выбрать — решать вам.

Источник

mysqli_fetch_array

Выбирает одну строку данных из набора результатов и возвращает её в виде массива. Каждый последующий вызов этой функции будет возвращать следующую строку в наборе результатов или null , если строк больше нет.

Помимо хранения данных в числовых индексах массива результатов, функция также может сохранять данные в ассоциативных индексах, используя имена полей набора результатов в качестве ключей.

Если два и более столбца результата имеют одинаковое имя, последний столбец будет иметь приоритет и перезапишет любые предыдущие данные. В таких ситуациях для доступа к данным всех столбцов с одинаковыми именами лучше пользоваться обычными массивами, индексированными номерами столбцов.

Замечание: Имена полей, возвращаемые этой функцией являются зависимыми от регистра.

Замечание: Эта функция устанавливает NULL-поля в значение null PHP.

Список параметров

Этот необязательный параметр принимает значение константы, которая указывает на тип массива, в который требуется поместить данные. Возможные значения параметра: MYSQLI_ASSOC , MYSQLI_NUM или MYSQLI_BOTH .

При использовании константы MYSQLI_ASSOC функция будет вести себя идентично mysqli_fetch_assoc() , а при MYSQLI_NUM идентично функции mysqli_fetch_row() . При задании MYSQLI_BOTH функция создаст один массив, включающий атрибуты обоих вариантов.

Возвращаемые значения

Возвращает массив, представляющий выбранную строку, null , если в наборе результатов больше нет строк или false в случае возникновения ошибки.

Примеры

Пример #1 Пример использования mysqli_result::fetch_array()

mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );

$query = «SELECT Name, CountryCode FROM City ORDER BY ID LIMIT 3» ;
$result = $mysqli -> query ( $query );

/* числовой массив */
$row = $result -> fetch_array ( MYSQLI_NUM );
printf ( «%s (%s)\n» , $row [ 0 ], $row [ 1 ]);

/* ассоциативный массив */
$row = $result -> fetch_array ( MYSQLI_ASSOC );
printf ( «%s (%s)\n» , $row [ «Name» ], $row [ «CountryCode» ]);

/* ассоциативный и числовой массивы */
$row = $result -> fetch_array ( MYSQLI_BOTH );
printf ( «%s (%s)\n» , $row [ 0 ], $row [ «CountryCode» ]);

mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$mysqli = mysqli_connect ( «localhost» , «my_user» , «my_password» , «world» );

$query = «SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3» ;
$result = mysqli_query ( $mysqli , $query );

/* числовой массив */
$row = mysqli_fetch_array ( $result , MYSQLI_NUM );
printf ( «%s (%s)\n» , $row [ 0 ], $row [ 1 ]);

/* ассоциативный массив */
$row = mysqli_fetch_array ( $result , MYSQLI_ASSOC );
printf ( «%s (%s)\n» , $row [ «Name» ], $row [ «CountryCode» ]);

/* ассоциативный и числовой массивы */
$row = mysqli_fetch_array ( $result , MYSQLI_BOTH );
printf ( «%s (%s)\n» , $row [ 0 ], $row [ «CountryCode» ]);

Результат выполнения данных примеров:

Kabul (AFG) Qandahar (AFG) Herat (AFG)

Смотрите также

  • mysqli_fetch_assoc() — Выбирает следующую строку из набора результатов и помещает её в ассоциативный массив
  • mysqli_fetch_column() — Получает один столбец из следующей строки набора результатов
  • mysqli_fetch_row() — Выбирает следующую строку из набора результатов и помещает её в обычный массив
  • mysqli_fetch_object() — Выбирает следующую строку из набора результатов в виде объекта
  • mysqli_query() — Выполняет запрос к базе данных
  • mysqli_data_seek() — Перемещает указатель результата на выбранную строку

User Contributed Notes

Источник

Читайте также:  Css resizable div height
Оцените статью