Progress28.ru

IT Новости
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Php sql запросы

Php sql запросы

За выполнение запросов отвечают функции mysqli_query() , mysqli_real_query() и mysqli_multi_query() . Чаще всего применяется функция mysqli_query() , так как она выполняет сразу две задачи: выполняет запрос и буферизует на клиенте результат этого запроса (если он есть). Вызов mysqli_query() идентичен последовательному вызову функций mysqli_real_query() и mysqli_store_result() .

Пример #1 Подключение к MySQL

= new mysqli ( «example.com» , «user» , «password» , «database» );
if ( $mysqli -> connect_errno ) <
echo «Не удалось подключиться к MySQL: (» . $mysqli -> connect_errno . «) » . $mysqli -> connect_error ;
>

if (! $mysqli -> query ( «DROP TABLE IF EXISTS test» ) ||
! $mysqli -> query ( «CREATE TABLE test(id INT)» ) ||
! $mysqli -> query ( «INSERT INTO test(id) VALUES (1)» )) <
echo «Не удалось создать таблицу: (» . $mysqli -> errno . «) » . $mysqli -> error ;
>
?>

Буферизация результатов запроса

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

PHP-приложения могут свободно оперировать данными внутри буферизованных результирующих наборов. Быстрая навигация по строкам наборов обусловлена тем, что наборы полностью располагаются в памяти клиента. Следует помнить, что зачастую обработка результатов на клиенте проще, нежели средствами сервера.

Пример #2 Навигация по строкам буферизованной результирующей таблицы

= new mysqli ( «example.com» , «user» , «password» , «database» );
if ( $mysqli -> connect_errno ) <
echo «Не удалось подключиться к MySQL: (» . $mysqli -> connect_errno . «) » . $mysqli -> connect_error ;
>

if (! $mysqli -> query ( «DROP TABLE IF EXISTS test» ) ||
! $mysqli -> query ( «CREATE TABLE test(id INT)» ) ||
! $mysqli -> query ( «INSERT INTO test(id) VALUES (1), (2), (3)» )) <
echo «Не удалось создать таблицу: (» . $mysqli -> errno . «) » . $mysqli -> error ;
>

$res = $mysqli -> query ( «SELECT id FROM test ORDER BY id ASC» );

echo «Обратный порядок. n» ;
for ( $row_no = $res -> num_rows — 1 ; $row_no >= 0 ; $row_no —) <
$res -> data_seek ( $row_no );
$row = $res -> fetch_assoc ();
echo » > . $row [ ‘id’ ] . «n» ;
>

echo «Исходный порядок строк. n» ;
$res -> data_seek ( 0 );
while ( $row = $res -> fetch_assoc ()) <
echo » > . $row [ ‘id’ ] . «n» ;
>
?>

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

Небуферизуемые результирующие наборы

Если клиентские ресурсы ограничены, и в тоже время не требуется поддерживать низкую нагрузку на сервер, можно использовать не буферизованные результирующие наборы. Навигация по таким таблицам невозможна, потому что так или иначе должны быть обработаны все строки набора.

Пример #3 Навигация по строкам небуферизованной результирующей таблицы

-> real_query ( «SELECT id FROM test ORDER BY id ASC» );
$res = $mysqli -> use_result ();

echo «Порядок строк в результирующем наборе. n» ;
while ( $row = $res -> fetch_assoc ()) <
echo » > . $row [ ‘id’ ] . «n» ;
>
?>

Типы данных значений в результирующей таблице

Функции mysqli_query() , mysqli_real_query() и mysqli_multi_query() предназначены для выполнения неподготавливаемых запросов. На уровне протокола клиент-серверного взаимодействия MySQL за выполнение запросов отвечают команда COM_QUERY и текстовый протокол. Когда используется текстовый протокол, сервер MySQL перед отправкой клиенту преобразует все данные в результирующем наборе в текстовые строки. Это преобразование выполняется вне зависимости от типа данных SQL-столбца результирующей таблицы. Клиентские библиотеки mysql, в свою очередь, получают все данные, принимая их за строки. На клиенте не проводится никакого обратного преобразования к исходным типам, все данные, полученные приложением остаются PHP строками.

Пример #4 Текстовый протокол по умолчанию возвращает строки

= new mysqli ( «example.com» , «user» , «password» , «database» );
if ( $mysqli -> connect_errno ) <
echo «Не удалось подключиться к MySQL: (» . $mysqli -> connect_errno . «) » . $mysqli -> connect_error ;
>

if (! $mysqli -> query ( «DROP TABLE IF EXISTS test» ) ||
! $mysqli -> query ( «CREATE TABLE test(id INT, label CHAR(1))» ) ||
! $mysqli -> query ( «INSERT INTO test(id, label) VALUES (1, ‘a’)» )) <
echo «Не удалось создать таблицу: (» . $mysqli -> errno . «) » . $mysqli -> error ;
>

$res = $mysqli -> query ( «SELECT > );
$row = $res -> fetch_assoc ();

printf ( » > , $row [ ‘id’ ], gettype ( $row [ ‘id’ ]));
printf ( «label = %s (%s)n» , $row [ ‘label’ ], gettype ( $row [ ‘label’ ]));
?>

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

Если используется библиотека mysqlnd, можно включить преобразование целочисленных значений и чисел с плавающей запятой из столбцов таблицы в PHP числа. Делается это заданием настройки подключения MYSQLI_OPT_INT_AND_FLOAT_NATIVE . В таком случае mysqlnd будет проверять метаданные столбцов и преобразовывать SQL-числа этих полей в PHP-числа, если эти значения не выходят за рамки допустимых диапазонов типов данных PHP. То есть, например, SQL INT число попадет в PHP приложение в виде целого (integer).

Пример #5 Получение исходных типов данных в приложении

= mysqli_init ();
$mysqli -> options ( MYSQLI_OPT_INT_AND_FLOAT_NATIVE , 1 );
$mysqli -> real_connect ( «example.com» , «user» , «password» , «database» );

if ( $mysqli -> connect_errno ) <
echo «Не удалось подключиться к MySQL: (» . $mysqli -> connect_errno . «) » . $mysqli -> connect_error ;
>

if (! $mysqli -> query ( «DROP TABLE IF EXISTS test» ) ||
! $mysqli -> query ( «CREATE TABLE test(id INT, label CHAR(1))» ) ||
! $mysqli -> query ( «INSERT INTO test(id, label) VALUES (1, ‘a’)» )) <
echo «Не удалось создать таблицу: (» . $mysqli -> errno . «) » . $mysqli -> error ;
>

$res = $mysqli -> query ( «SELECT > );
$row = $res -> fetch_assoc ();

printf ( » > , $row [ ‘id’ ], gettype ( $row [ ‘id’ ]));
printf ( «label = %s (%s)n» , $row [ ‘label’ ], gettype ( $row [ ‘label’ ]));
?>

Работа с базами данных SQL в PHP для новичков

Учебник PHP

Практика

Важное

Регулярки

Работа с htaccess

Файлы, папки

Сессии и куки

Работа с БД

Практика по работе с БД в PHP

Перед чтением см. новые уроки раздела «Важное», которые появились выше.

Практика

Движок PHP

Продвинутые БД

Аутентификация

Практика

ООП и MVC

Абстрактные классы и интерфейсы

Трейты

ООП Магия

Практика

Практика: классы как набор методов

  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс ArrayConvertor
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс TagHelper
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс FormHelper
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс TableHelper
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс SessionShell
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс CookieShell
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс FileManipulator
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс databaseShell TODO cart корзина flash шаблонизатор роутер контроллер кеш логи фалидатор

Что такое база данных

База данных (сокращенно БД) — это место, в котором хранятся данные сайта.

Это могут быть тексты страниц, списки пользователей с их логинами и паролями, каталоги продукции и другое.

База данных состоит из таблиц. Что такое таблица вы знаете из жизни: это строки и столбцы. А на пересечении строк и столбцов располагаются ячейки.

В базах данных столбцы часто называют полями.

Это легко можно вообразить себе, представив документ Excel. Базой данных будет являться сам документ (книга), а таблицами — каждый лист этой книги.

PhpMyAdmin

Для редактирования баз данных часто пользуются программой PhpMyAdmin.

PhpMyAdmin (читается PHPмайадмин, часто пишут аббревиатуру PMA или ПМА) — это оболочка для работы с базами данных прямо у вас в браузере.

Читать еще:  Защита информации представляет собой

Вы можете править содержимое таблиц, создавать новые базы данных и таблицы — и все это через веб-интерфейс, не зная SQL.

Видео на PhpMyAdmin

Задачи на PhpMyAdmin

Давайте откроем PhpMyAdmin и приступим к изучению его интерфейса.

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

  1. Создайте базу данных test.
  2. В ней создайте таблицу users.
  3. В этой таблице сделайте 4 поля (столбца):
    • id (для него нужно поставить галочку AUTO_INCREMENT или A.I.), тип integer,
    • name, тип varchar, 32 символа,
    • age, тип integer,
    • birthday (англ. день рождения), тип date.
  4. Найдите вкладку ‘вставить’ и с ее помощью вставьте несколько строк в эту таблицу При этом поле id заполнять не нужно! Оно заполнится автоматически!
  5. Поредактируйте какую-нибудь запись.
  6. Удалите какую-нибудь запись.
  7. Поменяйте кодировку для таблицы и для всей базы данных (на utf8_general_ci).
  8. Переименуйте таблицу.
  9. Переименуйте базу данных.

AUTO_INCREMENT

Обратите внимание на то, что мы создали поле id и поставили ему галочку AUTO_INCREMENT. Это очень важный шаг!

Теперь при вставке новой записи (строки) в таблицу это поле будет заполняться автоматически уникальным номером.

При этом если мы удалим строку с каким-то id (например 1), то такого id больше никогда не будет.

Зачем нужно поле id?

Затем, чтобы мы всегда могли обратиться к конкретной строке по ее id, например с целью удаления или редактирования.

Типы переменных

В SQL довольно много типов переменных, но чаще всего приходится пользоваться следующими:

  • integer – целочисленный.
  • text – большое текстовое поле.
  • varchar – не очень большое текстовое поле, при этом мы должны задать его размер (он должен быть степенью двойки: 8, 16, 32, 64, 128, 256 и т.д.).
  • date — поле для хранения даты (дата хранится в SQL-формате: год-месяц-день, пример: 2013-06-24).

Как работать с mySQL через PHP

Работа с БД из PHP осуществляется всего лишь с помощью трех функций:

  • mysqli_connect – соединение с сервером и базой данных.
  • mysqli_query — универсальная функция отправки запросов к БД, с помощью нее можно сделать все.
  • mysqli_error — вывод ошибок.

Далее подробнее про каждую из функций.

Устанавливаем соединение с БД

Данный материал есть также в виде видео: https://youtu.be/J8GFuyA_k_8

Прежде, чем начать работать с базой данных из PHP, нужно установить соединение с сервером, на котором эта база находится.

Делается это с помощью функции PHP mysql_connect, которая принимает 3 параметра: имя хоста (сервера), имя пользователя, под которым мы работаем с базой и пароль для этого пользователя.

Если вы работаете на своем компьютере то это будут ‘localhost’, ‘root’ и пароль в виде пустой строки (на некоторых серверах он тоже может быть root). Если ваша база данных в интернете — то эти данные дает вам хостер.

Давайте установим соединение с базой данных:

Посылаем запросы к базе данных

Запросы к базе данных представляют собой обычные строки, которые мы вставляем в функцию PHP mysqli_query (первым параметром это функция принимает переменную, в которую мы записали результат mysqli_connect, в нашем случае это переменная $link):

Принято правило, по которому команды SQL следует писать в верхнем регистре (то есть большими буквами), а все остальное — в нижнем.

Это относиться к командам SELECT, UPDATE, FROM, DELETE, WHERE и другим такого рода.

Конечно, синтаксической ошибки не будет, если вы напишите их маленькими буквами, но принято большими.

Отлавливаем ошибки базы данных

Многие начинающие зачастую не умеют отлавливать ошибки, которые вернула база данных.

Поэтому при работе с БД у них постоянно возникают сложности. Что-то не работает, а что — не понятно, так как ошибок они не видят, так как PHP не выводит ошибки mySQL, если ему об этом не сказать

Чтобы вывести ошибки, следует пользоваться конструкцией or die ( mysqli_error($link) ), которую необходимо добавлять к каждому запросу к БД.

Смотрите пример: mysqli_query($link, $query) or die( mysqli_error($link) );

Таким образом вы сразу будете получать сообщения об ошибках синтаксиса SQL. Обратите внимание на то, что на рабочем сайте эти конструкции следует удалять, чтобы пользователи и тем более хакеры не видели ошибок БД.

Проблемы с кодировками

Зачастую у новичков возникает проблема с кодировками — казалось бы нормальный русский текст в базу данных записывается абракадаброй или вопросиками.

Чтобы не было проблем с кодировками следует придерживаться простых правил:

  • Базу данных следует создавать в кодировке utf8_general_ci.
  • Документ PHP должен быть в кодировке utf8.
  • Таблицы в БД должны быть в utf8_general_ci.
  • На всякий случай сразу после команды mysqli_connect добавьте такое запрос: mysqli_query($link, «SET NAMES ‘utf8′»);

Начнем практиковаться

Сейчас мы с вами начнем изучить SQL запросы на практике. Для этого нам понадобится тестовая таблица в базе данных, заполненная некоторыми данными. Сейчас мы с вами ее сделаем и заполним.

Итак, создайте свою первую базу данных с помощью PhpMyAdmin.

Назовите ее «test».

Создайте в этой базе новую таблицу.

Назовите ее «workers» (англ. работники).

В ней создайте 4 столбца (столбцы по другому называются поля):

  • id – тип integer, не забудьте поставить ему галочку AUTO_INCREMENT (чтобы в этом столбце номера проставлялись автоматически).
  • name (англ. имя) – тип varchar, размером в 256 знаков.
  • age (англ. возраст) — тип integer.
  • salary (англ. зарплата) — тип integer.

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

idnameagesalary
1Дима23400
2Петя25500
3Вася23500
4Коля301000
5Иван27500
6Кирилл281000

Итак, у нас есть таблица с работниками фирмы, в которой указаны их имена, возрасты и зарплаты (в $). Далее мы будем работать с этой таблицей.

Тестируем работоспособность

Прежде чем начать работу, следует протестировать работоспособность — попробуем сделать какой-нибудь запрос к нашей базе.

Просто скопируйте этот код и запустите его у себя:

Если var_dump($result) вернет resource, то все работает, если же null – то возникли какие-то проблемы. в новых версиях PHP в $result будет лежать объект с данными (всегда будет непустой). Если обработать его через mysqli_fetch_assoc будет или результат или null (про mysqli_fetch_assoc см ниже или видео https://youtu.be/J8GFuyA_k_8 , которое уже было выше в пункте «Устанавливаем соединение»)

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

Как достать результат

После того, как мы сделали запрос к базе, в переменной $result будет лежать результат этого действия.

Однако лежит он не в той форме, которая нам нужна в PHP, а в той форме, в которой его прислала нам база.

Достать результат в нормальном виде (в массиве) можно с помощью следующего кода:

Как работает последняя строка?

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

В цикле for мы считываем построчно результат из базы.

Когда цикл дойдет до последней строки — mysqli_fetch_assoc вернет false и цикл for закончит свою работу.

А результат из БД будет лежать в нормальном виде в массиве $data.

PHP и MySQL

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

Введение

В первой части, основы MySQL и PHP, мы научились подключаться серверу MySQL, выбирать базу данных для работы, узнали PHP-функцию отправки запросов серверу MySQL, узнали два простейших запроса (создание и удаление таблицы), ну и узнали как закрывать соединение.

Теперь мы будем более глубоко изучать запросы MySQL. Итак, приступим!

Читать еще:  Php setlocale utf 8

Создание таблицы — 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, так что этот запрос не сработает на ней. Но это поле, содержащее уникальные номера строк, мы обязательно выучим.

Читать еще:  Xmlreader php вложенные элементы

Удалить запись — 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.

Основные запросы SQL работа с базой данных PHP

Вся работа с базой данных осуществляется с помощью четырех основных запросах: получение (SELECT), удаление (DELETE), обновление (UPDATE) и добавление данных (INSERT).

Если вы хотите сделать запрос к базе данных, сначала проговорите, как должен он работать и что он должен делать, пример:

Получить из базы данных «user» значения пользователя, а имено адрес и телефон, как буду его искать (по его id). Значит запрос будет примерно следующим:

$id — это переменная которую я присвою заранее.

Если вы хотите получить все поля пользователя:

А теперь посмотрим все запросы по одному:

SELECT

Самый простая и часто употребляемая команда, которая позволяет получить от сервера практически любую информацию из таблиц. Её синтаксис прост:

Если дословно: ВЫБРАТЬ поле ИЗ таблицы. Имена полей необходимо указывать через запятую или использовать * для вывода всех полей. В примерах, не забывайте указывать префикс таблиц, если он у вас есть. Вот и вся сложность.

Самые любопытные смогли догадаться, что этот запрос покажет все заголовки материалов, вместе с
типом этих материала.

Многие задаются вопросом а где мои данные, я вроде выполнил запрос а как вывести их на экран, все очень просто, после запроса нужно превратить ответ в более удобный и читаемый формат, пример:

Этот запрос подайдет когда в ответе одна запись, если записей много их нужно выводить через цикл WHILE, пример:

Чтобы вывести эти значения я использую конструкцию foreach as, пример:

WHERE

WHERE поле условие значение

Получение данных полей таблиц не составляет большого труда, достаточно знать имена полей(какие в них хранятся логические данные) и таблицы. Но есть одно но — в большинстве случаев нужны не все записи, а записи, удовлетворяющие определённому условию. Тут на помощь нам приходит выражение WHERE:

К нашему запросу мы добавили условие фильтра, позволяющего из общей массы отобрать только нужные нам данные.

Данных “хакерским” запросом можно получить имя и email пользователя №1 системы, ограничив количество просматриваемых записей только записью, у которой u >

Выражение WHERE довольно мощное и позволяет создавать очень сложные фильтры, и применять различные условия в зависимости от типа данных поля. Основные условия это:

  • знаки сравнения >, =(больше или равно), или != (не равно).
  • оператор LIKE (шаблон) для строк. В шаблоне: % — любое количество, _ — 1 символ
  • AND, OR, NOT, XOR стандартные функции И, ИЛИ, НЕ, ОДИН ИЗ. Используйте ( ), для избежания двусмысленностей
  • IN (список_значений) аналог множественного OR

Выбрать заголовки материалов типов page или forum которые опубликованны. Это же выражение можно переписать в следующем виде:

Позволит просмотреть записи, у которых часть ника или email содержит комбинацию символов ‘sex’.

ORDER BY

Выражение в запросе позволяет отсортировать выводимые строки по заданным полям. При этом оно не влияет на получаемый результат, а только упорядочивает его вывод. Если используется выражение WHERE, то ORDER BY должно быть после него.
Необязательное BINARY позволяет осуществлять сортировку строковых данных с учётом регистра, а DESC изменить порядок сортировки на обратный.

Вывод только ников пользователей, отсортированных по времени их последнего входа на сайт.

LIMIT

Данное выражение MySQL, в дополнение к WHERE позволяет ограничить количество выводимых SELECT строк заданным количеством. Если указано смещение, то заданное количество строк будет пропущено при начале отсчёта вывода.

Вывод только 5 ников пользователей, отсортированных по времени их последнего входа на сайт.

DELETE

В отличии от команды SELECT, следующие команды приводят к изменениям данных в таблицах. Поэтому будьте внимательны к правильности их ввода. Команда DELETE используется для удаления одной или нескольких строк в таблице. Синтаксис команды прост:

Имена столбцов не используются, поскольку применяется для удаления целых строк а не значений из строк. Зачастую имеет смысл удалить только часть строк, по заданным критериям, поэтому в команде SELECT можно использовать инструкции WHERE, ORDER BY и LIMIT.

Используя данную команду, мы почистим таблицу пользователей от тех, кто содержит в любой части поля ника или email последовательность ‘sex’

Если вам нужно выполнить полную очистку(удаление) всех данных в таблице — воспользуйтесь командой:

При этом структура таблицы разрушается и заново создаётся. При этом все данные удаляются.

UPDATE

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

Как и в предыдущей команде, тут можно использовать инструкции WHERE, ORDER BY и LIMIT, чтобы ограничить количество и диапазон затрагиваемых строк.

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

INSERT

Инструкция используется для добавления новых данных в таблицу.

Значения должны быть все (по числу полей в таблице), записаны через запятую, и их порядок должен соответствовать порядку следования столбцов в таблице. Альтернативный синтаксис:

В данном случае порядок значений для полей должен соответствовать перечисленному порядку. Пропущенные поля будут заполнены значениями по умолчанию. И ещё один тип синтаксиса:

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

Данным запросом была добавлены новые роли с именем Суперадмин и Модератор.

Ссылка на основную публикацию
Adblock
detector