Php sql получить результат запрос
В первой части, основы MySQL и PHP, мы научились подключаться серверу MySQL, выбирать базу данных для работы, узнали PHP-функцию отправки запросов серверу MySQL, узнали два простейших запроса (создание и удаление таблицы), ну и узнали как закрывать соединение.
Теперь мы будем более глубоко изучать запросы MySQL. Итак, приступим!
Создание таблицы — CREATE TABLE
Сейчас у нас пустая база данных, в ней нет таблиц. Поэтому сначала создадим таблицу. Мы уже знаем как это делать из первой части.
Вот код скрипта, который создаст нужную нам табличку:
В нашей таблице только два поля: логин и пароль. Пока что нам больше не нужно, не будем усложнять процесс.
Итак, таблица создана.
Добавление строк (записей) в таблицу — INSERT
Добавить новую строку в таблицу можно при помощи SQL команды insert. Вот пример:
SQL запрос состоит из команды INSERT INTO , имени базы данных users, затем в скобках идут имена полей, потом слово VALUE , после которого в скобках следуют добавляемые значения. Значения берутся в кавычки.
Синтаксис запроса выглядит так:
INSERT INTO имя_таблицы (столбец1, столбец2) VALUE (‘х1’, ‘х2’)
Кавычки во вторых скобках обязательны.
На месте значений могут быть переменные. Вот пример:
Конечно, в этом примере мало смысла. Возможно, новичкам будет полезно услышать, что так в базу данных записываются логины и пароли, которые сообщают пользователи при регистрации. Эти данные хранятся в переменных, потом, после проверки, записываются в базу.
Существует быстрый способ вставки нескольких строк одним запросом INSERT :
Как видим, перечисляемые данные просто отделены запятыми.
Итак, при помощи команды INSERT мы научились добавлять записи в таблицу. Идём дальше.
Просмотр таблицы: команда SELECT
Теперь у нас есть таблица users, в которой есть строки. Прошлый скрипт можно запустить несколько раз, и каждый раз он будет добавлять строку в таблицу. Теперь мы можем не знать, сколько у нас строк в таблице. А хочется знать что у нас в ней записано.
Для получения данных из таблицы используется SQL-команда SELECT . Знак * обозначает что мы запрашиваем все данные, затем после слова FROM пишем имя таблицы, из которой хотим получить данные.
Запросим все данные из таблицы users:
Функция mysqli_query() вернула нам — мы его помещаем в переменную и в дальнейшем будем работать с ним при помощи других функций PHP.
Число записей в запросе
Давайте определим сколько строк в нашем запросе? Я вот запустил скрипт добавления записи в таблицу сам не помню сколько раз и теперь не знаю сколько строк в моей таблице.
Для определения числа строк в результате запроса используют функцию mysqli_num_rows() . Этой функции передаётся идентификатор результата запроса, а вернёт она число записей.
Если нам нужно узнать число записей в таблице, то приведённый способ не самый подходящий. Тут мы узнали число записей, найденных в запросе, но число записей в таблице ищется по другому.
Число записей в таблице SELECT COUNT(*)
Чтобы узнать число записей в таблице можно воспользоваться командой SELECT COUNT(*) FROM имя_таблицы .
Обратите внимание, тут мы использовали новую функцию PHP mysqli_fetch_row() для получения данных. Эта функция возвращает ряд результата запроса в форме простого массива, в нашем случае в ряду одно поле и оно имеет индес 0.
Просмотр результата запроса в цикле
После выполнения SQL-запроса с командой SELECT и получения идентификатора результата запроса, PHP создаёт в наборе записей результата внутренний указатель. Этот указатель автоматически перемещается на следующую запись, после обращения к текущей записи. Благодаря этому механизму набор результа запроса SELECT очень удобно просматривать в цикле.
В PHP есть несколько функций, при помощи которых можно дла каждой строки результирующего запроса получить массив, состоящий из её полей. Для примера возьмём функцию mysqli_fetch_row() . Этой функции передают идентификатор запроса, а возвращает она массив. Так в цикле просматривается весь результат запроса, по достижению конца результата запроса функция вернёт false .
Итак, запрашиваем все данные из таблицы users ( SELECT * FROM users ).
Функция mysqli_fetch_row() возвращает простой массив. В каждой итерации цикла мы получим массив с строкой из таблицы, доступ к полям которой мы можем получить указав числовой индекс.
То же самое можно сделать используя функцию mysql_fetch_assoc() , она возвращает ассоциативный массив.
Также есть функции mysqli_fetch_array() — возвращает любой тип массива, и mysqli_fetch_object() — возвращает объект.
Запрос SELECT DISTINCT — уникальные значения полей
Давайте создадим новую таблицу:
Итак, мы имеем новую, более сложную таблицу с уникальными записями. Сейчас давайте посмотрим, сколько у нас имён в базе данных.
SQL-запрос » SELECT DISTINCT name FROM users » вернул результат со всеми уникальными именами в нашей таблице. Каждое уникальное имя в новой строке результата запроса.
Сортировка результата — ORDER BY
Добавив в SQL-запрос команду ORDER BY мы сортируем результат запроса по возрастанию (цифры и буквы по алфавиту). Вот пример, в котором можно сравнить обычный запрос и отсортированный по возрасту (поле age).
Можете заменить поле age в команде ORDER BY на поле name и посмотреть результат.
Чтобы сортировать результат запроса в обратном порядке используйте команду ORDER BY age DESC .
Соответствие условию — WHERE
Добавив в SQL-запрос команду WHERE мы запросим только те записи, которые соответствуют условию. Например, сделаем запрос на людей младше 30 лет.
Для этого используем SQL-запрос » SELECT * FROM users WHERE age «.
Также мы можем сразу отсортировать результат по возрастанию age:
» SELECT * FROM users WHERE age<30 ORDER BY age «.
Если мы сделаем запрос » SELECT name FROM users WHERE age<30 ORDER BY age «, то в результате нам вернут только значения поля «name», но они также будут отсортированы по age.
Мы можем запросить значения двух полей: » SELECT name, age FROM users WHERE age «.
Теперь запросим все пользователей, с именем «Max».
И ещё пример запроса , — выберет только имена (name) из таблицы users, все кроме Max.
SELECT name FROM users WHERE name!=’Max’
На этом с запросом WHERE всё.
Ограничение записей — LIMIT
Добавив в SQL-запрос команду LIMIT мы ограничим размер результата.
Запрос, который выводит первые три записи: » SELECT * FROM users LIMIT 3 «. Давайте посмотрим как он работает:
Также тут мы использовали запрос: » SELECT * FROM users LIMIT 3, 3 «. Вторая тройка указывает смещение в результате запроса.
Соответствие шаблону — LIKE
Язык SQL поддерживает простые шаблоны. Для этого используется команда LIKE и шаблон задаётся с использованием символа % .
Вот пример запроса, который вернёт все записи с именами, начинающимися на букву S.
SELECT * FROM users WHERE name LIKE ‘S%’
Вот пример запроса, который вернёт все записи с фамилиями, заканчивающимися на букву s.
SELECT * FROM users WHERE name LIKE ‘%s’
Соответствие условию — IN
Этот запрос с использованием команды IN вернёт только те строки, которые строго соответствую условию.
Например, нас интересуют люди с возрастом 21, 26 и 33 года.
SELECT * FROM users WHERE age IN (21,26,33)
Максимальное и минимальное значение в столбце
Выбирает максимальное значение age в таблице users.
SELECT max(age) FROM users
Следующий запрос выбирает данные из таблицы users по полям name и age где age принимает минимальное значение.
SELECT name, min(age) FROM users
Обновление записи — UPDATE
Давайте Max Lopes установим возраст 15 лет. Это делается запросом MySQL:
UPDATE users SET age=’15’ WHERE name=’Max’ AND surname=’Lopes’
Обратите внимание на новую команду AND (and — по английски значит «и») в запросе. Если мы не уточним фамилию, то возраст 15 лет будет установлен всем Максам в таблице.
Одним запросом можно обновить два и более полей в одной строке. Делается это следующим образом:
UPDATE users SET age = ’18’, surname = ‘Coocker’ WHERE
В нашей таблице нет поля id, так что этот запрос не сработает на ней. Но это поле, содержащее уникальные номера строк, мы обязательно выучим.
Удалить запись — DELETE
Запрос к базе данных MySQL для удаления записи:
DELETE FROM users WHERE
Опять же, в нашей таблице нет поля id. Но мы можем удалить из неё всех людей, младше 18 лет.
DELETE FROM users WHERE age < ’18’
Удалить таблицу — DROP TABLE
Запрос к базе данных MySQL который удаляет целиком таблицу users:
DROP TABLE users
Удалить столбец — ALTER TABLE . DROP .
Иногда может потребоваться удалить столбец из таблицы, давайте например удалим из users столбец age:
ALTER TABLE users DROP age
Этот запрос MySQL удалил столбец окончательно и безвозвратно.
Добавить столбец — ALTER TABLE . ADD .
Иногда может потребоваться добавить столбец в существующую таблицу, давайте например снова добавим в таблицу users столбец age:
ALTER TABLE users ADD age TINYINT UNSIGNED
Этот запрос MySQL добавил столбец age с типом данных TINYINT UNSIGNED .
Переименование столбца — ALTER TABLE . CHANGE .
Иногда может потребоваться переименовать столбец, например столбец age переименовать в vozrast. Делаем это так:
ALTER TABLE users CHANGE age vozrast TINYINT UNSIGNED
Этот запрос MySQL переименовал столбец age в vozrast с типом данных TINYINT UNSIGNED .
Переименование таблицы — RENAME TABLE . TO .
Иногда может потребоваться переименовать таблицу:
RENAME TABLE users TO peoples
Удаление базы данных — DROP DATABASE
Этот запрос может удалить базу данных с имененм tester:
DROP DATABASE tester
У меня на денвере этот запрос работает, но на хостинге может и не сработать, если у пользователя базы данных нет прав на выполнение удаления.
Создание базы данных — CREATE DATABASE
Этот запрос создаёт базу данных с имененм tester:
CREATE DATABASE tester
У меня на денвере этот запрос работает, но на хостинге может и не сработать, если у пользователя базы данных нет прав на выполнение удаления.
Итоги
Итак, в этой части мы ознакомились с запросами к MySQL. Многие из рассмотренных нами запросов нам не часто пригодятся в процессе работы, но знать их нужно, так как они точно пригодятся в процессе разработки скриптов.
Некоторые запросы обычно делают только из phpMyAdmin (создание и удаление баз данных например).
В работе сайтов обычно нужно добавить запись в таблицу, редактировать запись или удалить запись из таблицы.
Источник
Работа с MySQL в PHP
PHP поддерживает работу с базой данных MySQL.
Специальные встроенные функции для работы с MySQL позволяют просто и эффективно работать с этой СУБД: выполнять любые запросы, читать и записывать данные, обрабатывать ошибки.
Сценарий, который подключается к БД, выполняет запрос и показывает результат, будет состоять всего из нескольких строк. Для работы с MySQL не надо ничего дополнительно устанавливать и настраивать; всё необходимое уже доступно вместе со стандартной поставкой PHP.
Что такое mysqli?
mysqli (MySQL Improved) — это расширение PHP, которое добавляет в язык полную поддержку баз данных MySQL. Это расширение поддерживает множество возможностей современных версий MySQL.
Как выглядит работа с базой данных
Типичный процесс работы с СУБД в PHP-сценарии состоит из нескольких шагов:
- Установить подключение к серверу СУБД, передав необходимые параметры: адрес, логин, пароль.
- Убедиться, что подключение прошло успешно: сервер СУБД доступен, логин и пароль верные и так далее.
- Сформировать правильный SQL запрос (например, на чтение данных из таблицы).
- Убедиться, что запрос был выполнен успешно.
- Получить результат от СУБД в виде массива из записей.
- Использовать полученные записи в своём сценарии (например, показать их в виде таблицы).
Функция mysqli connect: соединение с MySQL
Перед началом работы с данными внутри MySQL, нужно открыть соединение с сервером СУБД.
В PHP это делается с помощью стандартной функции mysqli_connect() . Функция возвращает результат — ресурс соединения. Данный ресурс используется для всех следующих операций с MySQL.
Но чтобы выполнить соединение с сервером, необходимо знать как минимум три параметра:
- Адрес сервера СУБД;
- Логин;
- Пароль.
Если вы следовали стандартной процедуре установки MySQL или используете OpenServer, то адресом сервера будет localhost , логином — root . При использовании OpenServer пароль для подключения — это пустая строка ‘’, а при самостоятельной установке MySQL пароль вы задавали в одном из шагов мастера установки.
Базовый синтаксис функции mysqli_connect() :
Проверка соединения
Первое, что нужно сделать после соединения с СУБД — это выполнить проверку, что оно было успешным.
Эта проверка нужна, чтобы исключить ошибку при подключении к БД. Неверные параметры подключения, неправильная настройка или высокая нагрузка заставит MySQL отвеграть новые подключения. Все эти ситуации приведут к невозможности соединения, поэтому программист должен проверить успешность подключения к серверу, прежде чем выполнять следующие действия.
Соединение с MySQL устанавливается один раз в сценарии, а затем используется при всех запросах к БД.
Результатом выполнения функции mysqli_connect() будет значение специального типа — ресурс.
Если подключение к MySQL не удалось, то функция mysqli_connect() вместо ресурса вернет логическое значение типа «ложь» — false .
Хорошей практикой будет всегда проверять значение результа выполнения этой функции и сравнивать его с ложью.
Соединение с MySQL и проверка на ошибки:
Функция mysqli_connect_error() просто возвращает текстовое описание последней ошибки MySQL.
Установка кодировки
Первым делом после установки соединения крайне желательно явно задать кодировку, которая будет использоваться при обмене данными с MySQL. Если этого не сделать, то вместо записей со значениями, написанными кириллицей, можно получить последовательность из знаков вопроса: ‘. ’.
Вызови эту функцию сразу после успешной установки соединения: mysqli_set_charset($con, «utf8»);
Выполнение запросов
Установив соединение и определив кодировку мы готовы выполнить свои первые SQL-запросы. Вы уже умеете составлять корректные SQL команды и выполнять их через консольный или визуальный интерфейс MySQL-клиента.
Те же самые запросы можно отправлять без изменений и из PHP-сценария. Помогут в этом несколько встроенных функций языка.
Два вида запросов
Следует разделять все SQL-запросы на две группы:
- Чтение информации (SELECT).
- Модификация (UPDATE, INSERT, DELETE).
При выполнении запросов из среды PHP, запросы из второй группы возвращают только результат их исполнения: успех или ошибку.
Запросы первой группы при успешном выполнении возвращают специальный ресурс результата. Его, в свою очередь, можно преобразовать в ассоциативный массив (если нужна одна запись) или в двумерный массив (если требуется список записей).
Добавление записи
Вернёмся к нашему проекту — дневнику наблюдений за погодой. Начнём практическую работу с заполнения таблиц данными. Для начала добавим хотя бы один город в таблицу cities.
Выражение INSERT INTO используется для добавления новых записей в таблицу базы данных.
Составим корректный SQL-запрос на вставку записи с именем города, а затем выполним его путём передачи этого запроса в функцию mysqli_query() , чтобы добавить новые данные в таблицу.
Обратите внимание, что первым параметром для функциии mysqli_query() передаётся ресурс подключения, полученный от функции mysqli_connect() , вторым параметром следует строка с SQL-запросом.
При запросах на изменение данных (не SELECT) результатом выполнения будет логическое значение — true или false.
false будет означать, что запрос выполнить не удалось. Для получения строки с описанием ошибки существует функция mysqli_error($link) .
Функция insert id: как получить идентификатор добавленной записи
Следующим шагом будет добавление погодной записи для нового города.
Погодные записи хранит таблица weather_log, но, чтобы сослаться на город, необходимо знать идентификатор записи из таблицы cities.
Здесь пригодится функция mysqli_insert_id() .
Она принимает единственный аргумент — ресурс соединения, а возвращает идентификатор последней добавленной записи.
Теперь у нас есть всё необходимое, чтобы добавить погодную запись.
Вот как будет выглядеть комплексный пример с подключением к MySQL и добавлением двух новых записей:
Чтение записей
Другая частая операция при работе с базами данных в PHP — это получение записей из таблиц (запросы типа SELECT).
Составим SQL-запрос, который будет использовать SELECT выражение. Затем выполним этот запрос с помощью функции mysqli_query() , чтобы получить данные из таблицы.
В этом примере показано, как вывести все существующие города из таблицы cities:
В примере выше результат выполнения функции mysqli_query() сохранён в переменной $result .
Важно понимать, что в этой переменной находятся не данные из таблицы, а специальный тип данных — так называемая ссылка на результаты запроса.
Чтобы получить действительные данные, то есть записи из таблицы, следует использовать другую функцию — mysqli_fetch_array() — и передать ей единственным параметром эту самую ссылку.
Теперь каждый вызов функции mysqli_fetch_array() будет возвращать следующую запись из всего результирующего набора записей в виде ассоциативного массива.
Цикл while здесь используется для «прохода» по всем записям из полученного набора записей.
Значение поля каждой записи можно узнать просто обратившись по ключу этого ассоциативного массива.
Как получить сразу все записи в виде двумерного массива
Иногда бывает удобно после запроса на чтение не вызывать в цикле mysqli_fetch_array для извлечения очередной записи по порядку, а получить их сразу все одним вызовом. PHP так тоже умеет. Функция mysqli_fetch_all($res, MYSQLI_ASSOC) вернёт двумерный массив со всеми записями из результата последнего запроса.
Перепишем пример с показом существующих городов с её использованием:
Как узнать количество записей
Часто бывает необходимо узнать, сколько всего записей вернёт выполненный SQL запрос.
Это может помочь при организации постраничной навигации, или просто в качестве информации.
Узнать число записей поможет функция mysqli_num_rows() , которой следует передать ссылку на результат запроса.
Источник
mysql_result
Данный модуль устарел, начиная с версии PHP 5.5.0, и удалён в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API. Альтернативы для данной функции:
- mysqli_data_seek() в связке с mysqli_field_seek() и mysqli_fetch_field()
- PDOStatement::fetchColumn()
Описание
Возвращает содержимое одного поля из набора результата MySQL.
Работая с большими результатами запросов, следует использовать одну из функций, обрабатывающих сразу целый ряд результата (указаны ниже). Так как эти функции возвращают значение нескольких ячеек сразу, они НАМНОГО быстрее mysql_result() . Кроме того, учтите, что указание численного смещения работает намного быстрее, чем указание колонки, или колонки с таблицей через точку.
Список параметров
Обрабатываемый результат запроса. Этот результат может быть получен с помощью функции mysql_query() .
Номер получаемого ряда из результата. Нумерация рядов начинается с 0 .
Имя или смещение получаемого поля.
Может быть как смещением поля, именем поля, так и именем поля вместе с таблицей (таблица.поле). Если для поля был указан псевдоним ('select foo as bar from. '), используйте его вместо имени самого поля. Если не указан, возвращается первое поле.
Возвращаемые значения
Содержимое одного поля из набора результата MySQL в случае успеха, или false в случае ошибки.
Примеры
Пример #1 Пример использования mysql_result()
<?php
$link = mysql_connect ( ‘localhost’ , ‘mysql_user’ , ‘mysql_password’ );
if (! $link ) <
die( ‘Ошибка соединения: ‘ . mysql_error ());
>
if (! mysql_select_db ( ‘database_name’ )) <
die( ‘Ошибка выбора базы данных: ‘ . mysql_error ());
>
$result = mysql_query ( ‘SELECT name FROM work.employee’ );
if (! $result ) <
die( ‘Ошибка выполнения запроса:’ . mysql_error ());
>
echo mysql_result ( $result , 2 ); // выведет имя третьего сотрудника
Примечания
Замечание:
Вызовы функции mysql_result() не должны смешиваться с другими функциями, работающими с результатом запроса.
Источник
mysql_result
Данное расширение устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API и соответствующий FAQ для получения более подробной информации. Альтернативы для данной функции:
- mysqli_data_seek() в связке с mysqli_field_seek() и mysqli_fetch_field()
- PDOStatement::fetchColumn()
Описание
Возвращает содержимое одного поля из набора результата MySQL.
Работая с большими результатами запросов, следует использовать одну из функций, обрабатывающих сразу целый ряд результата (указаны ниже). Так как эти функции возвращают значение нескольких ячеек сразу, они НАМНОГО быстрее mysql_result() . Кроме того, учтите, что указание численного смещения работает намного быстрее, чем указание колонки, или колонки с таблицей через точку.
Список параметров
Обрабатываемый результат запроса. Этот результат может быть получен с помощью функции mysql_query() .
Номер получаемого ряда из результата. Нумерация рядов начинается с .
Имя или смещение получаемого поля.
Может быть как смещением поля, именем поля, так и именем поля вместе с таблицей (таблица.поле). Если для поля был указан псевдоним ('select foo as bar from. '), используйте его вместо имени самого поля. Если не указан, возвращается первое поле.
Возвращаемые значения
Содержимое одного поля из набора результата MySQL в случае успеха, или FALSE в случае ошибки.
Примеры
Пример #1 Пример использования mysql_result()
<?php
$link = mysql_connect ( ‘localhost’ , ‘mysql_user’ , ‘mysql_password’ );
if (! $link ) <
die( ‘Ошибка соединения: ‘ . mysql_error ());
>
if (! mysql_select_db ( ‘database_name’ )) <
die( ‘Ошибка выбора базы данных: ‘ . mysql_error ());
>
$result = mysql_query ( ‘SELECT name FROM work.employee’ );
if (! $result ) <
die( ‘Ошибка выполнения запроса:’ . mysql_error ());
>
echo mysql_result ( $result , 2 ); // выведет имя третьего сотрудника
Примечания
Замечание:
Вызовы функции mysql_result() не должны смешиваться с другими функциями, работающими с результатом запроса.
Источник
Вывод результата запроса из БД в php
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Вывод результата PHP запроса в текущую HTML страницу
Добрый день. Есть форма "Отслеживание" и её php обработчик. Все работает корректно, данные.
Форматированный вывод результата запроса
Привет всем! У меня такой вопрос: выполняется запрос mysql, и выводиться в таблице в php. запрос.
Получение и вывод результата запроса к базе через ajax
Необходимо вывести результаты sql запроса к базе в div через ajax. Не получается составить запрос.
Обработка запроса в базу по кнопке,и вывод результата сразу на форму
Добрый вечер. В общем проблема такая. Кто разбирается помогите пожалуйста. Имеется некое меню с.
Сообщение от VanUliK
Сообщение от liar_84
Конечно php, дома вечером попробую, но мой запрос в query browser пробовал, всё нормально обрабатывается, выводит заголовки столбцов, а результата нету(
Добавлено через 13 часов 5 минут
Сообщение от liar_84
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Вывод запроса в таблицу PHP
Добрый день. Прошу помочь реализовать вывод нескольких запросов в скрипте php. Есть скрипт с.
Вывод SELECT запроса в php
Итак, сколько бегал по форуму так и не смог попасть в нужное русло. Итак приступим, есть база.
Как результат запроса другого результата запроса запихнуть в массив?
Как результат запроса другого результата запроса запихнуть в массив? Здравствуйте, у меня такая вот.
Вывод SQL запроса разницы двух SUM в PHP
Добрый день. Пишу программу учета доходов и расходов. Остаток для каждой выводимой строки хочу.
Источник