- Как вывести данные из БД в массив (PHP)?
- Вывод данных mysql php массив
- Объектно-ориентированный стиль
- Список пользователей
- Процедурный стиль
- Список пользователей
- Как происходит вывод данных базы данных PHP c помощью SQL-запросов
- Окунемся в SQL
- Курс «PHP-разработчик с нуля»
- Курс «SQL и получение данных»
- Курс «веб-разработчик с нуля»
- Отображаем информацию на экране
- Курс «PHP-разработчик с нуля»
- Курс «SQL и получение данных»
- Курс «веб-разработчик с нуля»
Как вывести данные из БД в массив (PHP)?
Пишу WhatsApp (дальше ВА) бота. Есть данные которые хранятся в БД. Понял как вывести данные с БД, но до конца не понимаю как из этих же данных формировать массив и вывести эти массивы. Прошу помочь.
welcome($message['chatId'],false); break;> case '1'; case 'да': yes($message['chatId'],$message['senderName']); break;> case '2'; case 'нет':not($message['chatId']); break;> default: welcome($message['chatId'],true); break;> > > > > > public function welcome($chatId, $noWelcome = false) < $welcomeString = $noWelcome ? "Добрый день я WhatsApp бот такой такой компаний.\nЧерез меня можете сделать заказ с доставкой.\n\nПравила бота, пишите команды в чат чтобы переходить по ним.\nЖелаете сделать заказ?\n\n":"Бот для заказов\n\n"; $this->sendMessage($chatId, $welcomeString. "1 - Да (Перейти на меню)\n". "2 - Нет (Обратиться в тех. поддержку)" ); > public function yes($chatId) //В ЭТОМ МОМЕНТЕ ДОЛЖНО ВЫХОДИТЬ МЕНЮ, КОТОРЫЙ ХРАНИТЬСЯ В БД. < $welcomeString = $noWelcome ? "Выберите:\n":"Все позиции из меню\n\n"; $this->sendMessage($chatId, $welcomeString. "1. Суши - 500 тг\n". "2. Ролы - 400 тг\n". "3. Бургер - 600 тг\n". "4. Салат - 300 тг\n". "5. Напиток - 200 тг\n" ); > public function not($chatId) < $welcomeString = $noWelcome ? "Выберите:\n":"Вы обратились в тех. поддержку\n\n"; $this->sendMessage($chatId, $welcomeString. "Позвонить - \n". "Пожаловаться на качеству обслуживания" ); > public function sendMessage($chatId, $text) < $data = ['chatId' =>$chatId, 'body' => $text]; $this->sendRequest('message', $data); > public function sendRequest($method, $data) < $url = $this->APIurl . $method . '?token=' . $this->token; if (is_array($data)) < $data = json_encode($data); >$options = stream_context_create([ 'http' => [ 'method' => 'POST', 'header' => 'Content-type: application/json', 'content' => $data, ], ]); $response = file_get_contents($url, false, $options); file_put_contents('requests.log', $response . PHP_EOL, FILE_APPEND); > > new whatsAppBot(); ?>
$query ="SELECT * FROM menu"; $query_do = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link)); // получаем данные в виде массива $result = mysqli_fetch_array($query_do); // теперь можем вытаскивать. Где id - название столбца $result['id'];
И как? Не вижу кода который у вас что-то вообще запрашивает из бд. БТВ данные из бд приходят обычно в виде массива (есть нюансы, но в целом так).
Id Наименование Цена "; for ($i = 0 ; $i < $rows ; ++$i) < $row = mysqli_fetch_row($result); echo ""; for ($j = 0 ; $j < 3 ; ++$j) echo "$row[$j] "; echo " "; > echo ""; // очищаем результат mysqli_free_result($result); > mysqli_close($link); ?>
Вывод данных mysql php массив
Для получения данных в 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 "
Id | Имя | Возраст |
---|---|---|
" . $row["id"] . " | "; echo "" . $row["name"] . " | "; echo "" . $row["age"] . " | "; echo "
Таким образом, при обращении к скрипту index.php браузер отобразит список данных, полученных из БД:
Дополнительно стоит отметить, что с помощью свойства $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 "
Id | Имя | Возраст |
---|---|---|
" . $row["id"] . " | "; echo "" . $row["name"] . " | "; echo "" . $row["age"] . " | "; echo "
Как происходит вывод данных базы данных PHP c помощью SQL-запросов
От автора: в некоторых языках программирования «приаттачивание» БД происходит подобно ловле рыбы: может клюнуть, а может и нет. Хорошо, что этим не страдает изучаемая нами дисциплина. Но все равно, чтобы не заниматься «рыболовством», нужно знать, как происходит вывод данных базы данных PHP.
Окунемся в SQL
Чтобы правильно отображать информацию из любой современной СУБД, нужно быть хорошо знакомым с SQL-командами и их синтаксисом. Из всех систем управления нас, конечно же, интересует MySQL.
Для выборки данных используется команда SELECT. Основы ее применения и написания лучше всего рассматривать на конкретных примерах. Я также рекомендую воспользоваться помощью одной из программных оболочек для администрирования СУБД (Workbench, phpMyAdmin). Вы, скорее всего, используете последнюю.
Курс «PHP-разработчик с нуля»
— Научитесь создавать сайты и веб-приложения на языке PHP.
— Изучите актуальные фреймворки Laravel, Simfony и Yii2.
— 78 часов теории и 361 час практики.
— Вы создадите 5 масштабных проектов для портфолио.
— Помощь с поиском работы или стажировки.
Курс «SQL и получение данных»
— Освоите один из основных инструментов работы с данными.
— 20 часов теории, 32 часа практики.
— Видеолекции, вебинары, практические задания и тренажёр.
— Выполните 6 домашних работ и итоговый проект.
— Помощь с поиском работы или стажировки.
Курс «веб-разработчик с нуля»
— Научитесь программировать на JavaScript и PHP.
— Сможете создавать сайты и веб-приложения.
— Сможете уверенно работать и с фронтендом, и с бэкендом веб-сервисов.
— Выполните 9 масштабных проектов для портфолио
— Помощь с поиском работы или стажировки.
Это самый популярный вариант применения команды для выборки. Таким образом мы указываем СУБД, что хотим выделить (выбрать) все строки, которые содержатся в таблице. Например:
Таким запросом мы осуществляем вывод из указанной базы данных MySQL PHP всей информации. Забыл напомнить, что особенностями синтаксиса обладает не только SQL, но и СУБД, основанные на нем.
В MySQL одной из таких особенностей является экранирование в запросах названий таблиц. Для этого используются не одинарные кавычки, а тильда (на клавиатуре она находится сверху клавиши «Ё»).
Чтобы вывести значения определенных столбцов, вместо звездочки («*») следует перечислить их имена. Пример запроса:
Как видно на снимке, с помощью этого запроса мы вывели значения из указанных столбцов. Обратите внимание, что столбцы отображаются в том порядке, в котором они перечислены. Давайте поменяем их местами и посмотрим, что будет:
Получается, что с помощью запросов мы может контролировать порядок вывода значений столбцов таблицы. Все рассмотренные выше примеры SELECT я вызывал изнутри БД. При этом запросы были направлены не к серверу СУБД, а прямо к таблицам базы. Но чаще применяется несколько иной синтаксис.
Если выйти из БД и осуществить в PHP вывод таблицы не из базы данных, а напрямую через ядро MySQL, тогда мы получим сообщение, что ни одна из БД не выделена. Доказательство:
Чтобы не «нарваться» на эти «грабли», лучше сразу прописывать имя базы и название таблицы. Пример реализации:
Отображаем информацию на экране
Думаю, пока этого минимума знаний по SQL нам достаточно. Теперь займемся выводом информации из базы данных MySQL в PHP. Я не буду останавливаться на рассмотрении того, как происходит подключение к серверу СУБД. Эту тему мы проходили в одном из прошлых материалов.
Чаще всего для вывода данных из таблицы используется цикл и функция mysqli_fetch_array(). Она принимает в качестве входного параметра переменную, в которую записывается результат работы mysqli_query(). Пример:
В этом примере вывода сортированных данных из базы MySQL PHP функция mysqli_fetch_array() преобразует результаты выборки в ассоциативный массив. В качестве ключей используются имена столбцов, указанные в запросе.
Обратите внимание на функцию mysqli_close(), вызов которой происходит в конце скрипта. Она закрывает соединение с БД. В качестве аргумента функция принимает идентификатор строки подключения.
СУБД может использоваться не только для хранения строк, но и текста. Например, чтобы реализовать вывод новостей из базы данных в PHP, следует лишь немного изменить предыдущий код. А для столбца таблицы, в котором будет храниться текстовый контент, задать тип данных text.
Курс «PHP-разработчик с нуля»
— Научитесь создавать сайты и веб-приложения на языке PHP.
— Изучите актуальные фреймворки Laravel, Simfony и Yii2.
— 78 часов теории и 361 час практики.
— Вы создадите 5 масштабных проектов для портфолио.
— Помощь с поиском работы или стажировки.
Курс «SQL и получение данных»
— Освоите один из основных инструментов работы с данными.
— 20 часов теории, 32 часа практики.
— Видеолекции, вебинары, практические задания и тренажёр.
— Выполните 6 домашних работ и итоговый проект.
— Помощь с поиском работы или стажировки.
Курс «веб-разработчик с нуля»
— Научитесь программировать на JavaScript и PHP.
— Сможете создавать сайты и веб-приложения.
— Сможете уверенно работать и с фронтендом, и с бэкендом веб-сервисов.
— Выполните 9 масштабных проектов для портфолио
— Помощь с поиском работы или стажировки.
Думаю, теперь не придется заниматься «рыбалкой». Вы сможете самостоятельно подключиться к любой БД и вывести те данные, которые нужны для работы скрипта.