Php запрос к базе данных mysql

Из этой статьи вы узнаете, как с помощью PHP PDO выполнять запрос к базе данных MySQL . А также как использовать подготовленный оператор PDO для безопасного извлечения данных.

Содержание
  1. PHP-запрос данных MySQL с помощью простого оператора SELECT
  2. Запрос данных PHP MySQL с использованием подготовленного оператора PDO
  3. Запросы MySQL с примерами: часть 2.
  4. Введение
  5. Создание таблицы — CREATE TABLE
  6. Добавление строк (записей) в таблицу — INSERT
  7. Просмотр таблицы: команда SELECT
  8. Число записей в запросе
  9. Число записей в таблице SELECT COUNT(*)
  10. Просмотр результата запроса в цикле
  11. Запрос SELECT DISTINCT — уникальные значения полей
  12. Сортировка результата — ORDER BY
  13. Соответствие условию — WHERE
  14. Ограничение записей — LIMIT
  15. Соответствие шаблону — LIKE
  16. Соответствие условию — IN
  17. Максимальное и минимальное значение в столбце
  18. Обновление записи — UPDATE
  19. Удалить запись — DELETE
  20. Удалить таблицу — DROP TABLE
  21. Удалить столбец — ALTER TABLE . DROP .
  22. Добавить столбец — ALTER TABLE . ADD .
  23. Переименование столбца — ALTER TABLE . CHANGE .
  24. Переименование таблицы — RENAME TABLE . TO .
  25. Удаление базы данных — DROP DATABASE
  26. Создание базы данных — CREATE DATABASE
  27. Итоги

PHP-запрос данных MySQL с помощью простого оператора SELECT

Чтобы запросить данные из базы данных MySQL , выполните следующие действия:

Сначала подключитесь к базе данных MySQL .

Затем создайте оператор SELECT и выполните его с помощью метода объекта PDO query() .

Метод объекта PDO query() возвращает объект PDOStatement или false при ошибке.

Затем с помощью метода setFetchMode() установите режим выборки PDO::FETCH_ASSOC для объекта PDOStatement . Режим PDO::FETCH_ASSOC указывает методу fetch() возвращать набор результатов как массив, проиндексированный по имени столбца с помощью PHP PDO MySQL .

После этого, используя метод fetch() объекта PDOStatement извлеките каждую строку из набора результатов, пока не останется ни одной строки.

Весь код PHP PDO примера будет выглядеть следующим образом:

Запрос данных PHP MySQL с использованием подготовленного оператора PDO

На практике часто нужно передать из кода значение в PHP PDO query . Например, чтобы получить данные сотрудников, фамилия которых заканчивается на son . Чтобы сделать это безопасно, нужно использовать подготовленный оператор PDO :

Вот, как работает этот скрипт.

  • Мы используем в операторе SELECT вопросительный знак (?) . PDO заменит вопросительный знак в запросе соответствующим аргументом. Вопросительный знак называется позиционным заполнителем;
  • Затем вызываем метод объекта PDO prepare() , чтобы подготовить оператор SQL к выполнению;
  • Далее выполняем запрос PHP PDO , вызывая метод объекта PDOStatement — execute() . Кроме этого мы передаем аргумент в виде массива, чтобы заменить позиционный заполнитель в SELECT . После этого SELECT будет переведен в следующий вид:
  • Устанавливаем режим извлечения для объекта PDOStatement ;
  • Получаем результаты выборки и отображаем поле фамилии.

PHP предоставляет еще один способ использования заполнителей в подготовленном операторе, который называется именованный заполнитель. Преимущества использования именованного заполнителя:

  • Имеет более описательный характер;
  • Если в операторе SQL имеется несколько заполнителей, то так проще передать аргументы методу execute() .

Рассмотрим следующий PHP PDO пример:

:lname и :fname — это именованные заполнители. Они заменяются соответствующими аргументами в ассоциативном массиве, который мы передаем методу execute .

Из этой статьи вы узнали, как выполнять запросы к базе данных с помощью PHP PDO MySQL .

Данная публикация представляет собой перевод статьи « PHP MySQL: Querying Data from Database » , подготовленной дружной командой проекта Интернет-технологии.ру

В данной статье мы рассмотрим способы обращения к таблицам баз данный MySQL с помощью языка запросов SQL. SQL — это аббревиатура, которая так и "раскрывается" — структуризированный язык запросов.
В языке PHP для это цели существует целый ряд функций с префиксом "mysql". Нам для рассмотрения запросов понадобится не так много из них. Функция, без которой в языке PHP выполнение SQL-запросов было бы просто невозможным:

Данная функция посылает запрос к базе данных и возвращает в случае успешного обращения идентификатор ресурса.
Для того чтобы подключиться к базе данных MySQL необходимо выполнить следующую последовательность:

Итак mysql_connect() — функция для подключения к серверу MySQL на Вашем хостинге.
А mysql_select_db() выбирает базу данных на сервере для подключения.
Иными словами подключаемся к серверу, выбираем базу и начинаем работать.
Функция die() вызывается в случае ошибки и выводит в окно браузера сообщение, которое вы указали.
Для завершения работы с базами данных используется функция:

Здесь $dbh — дескриптор, которые при соединении возвратила функция mysql_connect.
Закончив стартовый обзор, начнем рассмотрение собственно SQL-запросов.
Для этого прежде всего вам необходимо создать базу данных с определенном именем. А в ней создать таблицу, тоже с конкретным именем. В наших примерах будем обращаться к таблице my_sql_table. Чтобы создать эту таблицу давайте выполним в phpmyadmin нашего localhost следующий запрос:

Итак таблица создана. Выполним первый запрос, который сразу оформим в виде PHP-кода:

Разберем PHP-код файла firstsql.php. Начнем с собственно запроса к таблицам базы данных (БД).

Данный запрос можно расшифровать так: выбрать из таблицы my_sql_table БД все записи из всех полей. Таким образом знак * после слова SELECT означает "выбрать абсолютно все". Итак, запрос сформирован. Теперь его надо выполнить:

В случае успешного выполнения запроса функция mysql_query() вернет нам идентификатор ресурса $res.
Его мы должны передать в качестве параметра в функцию mysql_fetch_array(). Название этой функции говорит само за себя. Т.е. она формирует и выдает массив по выборке из таблицы БД. В случае нашей таблицы массив будет состоять из числа элементов, равных количествам записей (строк) в таблице и содержать значения id, firstname, surname для каждой строки таблицы. Следовательно, следующий код:

можно прокомментировать так: пока введенная нами переменная $row получает не нулевые результаты работы функции mysql_fetch_row следует выдать в броузер значение полей $row[‘id’], $row[‘firstname’], $row[‘surname’] с помощью echo.
Если запрос выполнить так:

то это будет означать, что из всех строк выбирается только значения поля firstname.
Следовательно предыдущий код следует переписать как:

Если Вы хотите выбрать строки таблицы с конкретным значением id где фамилия (surname) будет Петров, то запрос перепишется следующим образом:

А вот если потребуется узнать фамилию того, кто находится под номером, к примеру, 5, то запрос будет таким:

В этом случае Вы знаете, что результатом запроса будет всего одна строка из таблицы. Т.е. нет смысла организовывать цикл с использованием while. И обработка запроса будет следующей

Здесь вместо mysql_fetch_array() мы применили mysql_fetch_row(). Т.е. получить значение поля (или полей) конкретной строки. Поскольку поле у нас было одно — surname — мы можем обратиться к единственному элементу массива $row как $row[0];.

Далее мы не будем столь подробно останавливаться на обработке запросов, а будем рассматривать наиболее типичные примеры собственно запросов.

Итак, рассмотрим наиболее типичные примеры запросов MySQL. Рассмотрение проведем на базе таблицы my_sql_table:
1. Добавим в таблицу my_sql_table поле middle_name (отчество) после surname:

2. Теперь удалим поле surname из таблицы my_sql_table:

3. Удаляем записи из таблицы my_sql_table с фамилией Сидоров :

4. Помимо знаков равенства, также "больше" или "меньше", в языке MySQL запросов существует понятие "похоже на". Выберем записи из таблицы my_sql_table, где в фамилии встречается "дор" :

Здесь наличие "%" в начале и конце ‘дор’ и означает, что запрос будет искать именно ‘дор’, причем не важно в начале, конце, или середине фамилии он находится. Рассмотрим следующий пример
5. Выберем записи из таблицы my_sql_table с фамилией, которая начинается на П. Обратите внимание на расположение "%":

6. Вычислим максимальное значение id:

7. Вычислим количество полей в my_sql_table с фамилией, которая начинается на П.

8. Удаление таблицы my_sql_table:

Для запросов 1-3 на языке PHP достаточно просто выполнить запрос:

Мы рассмотрели наиболее характерные примеры запросов. Полагаю, с их помощью, следуя элементарной логике, Вы сможете выполнять более сложные запросы к созданным Вами таблицам баз данных MySQL.

Запросы MySQL с примерами: часть 2.

Введение

В первой части, основы 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 ".

Если мы сделаем запрос " SELECT name FROM users WHERE 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

Удалить таблицу — 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.

Оцените статью
Много толка
Добавить комментарий