базовый курс

ГРУППА КУРСА

Простые запросы к MySQL

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

Добавление записи

Запрос на добавление записи в таблицу выглядит следующим образом:

INSERT INTO таблица (поле1, поле2) VALUES (значение1, значение2)

Поясню подробнее: после названия таблицы в скобках перечисляются поля, в которые нужно вставить значения. Названия полей пишутся так же, как они написаны в таблице. Не обязательно указывать все поля. Если какие-то не указать, то в данной записи эти поля будут пустые. Также не нужно указывать поле, для которого установлен AUTO_INCREMENT. Оно заполняется автоматически. После слова values в скобках указываются значения полей. Они перечисляются в том порядке, в котором перечислены сами поля.

Создадим скрипт, который добавит запись в таблицу users базы данных mybase, которая создавалась в этой теме. Или Вы можете использовать другую базу данных, которую Вы создавали.

+
1
2
<?php
header('Content-type: text/html; charset=utf-8');
3
4
5
$db = mysqli_connect('localhost', 'root', '', 'mybase');
$query = "INSERT INTO users (login, pas) VALUES ('Andrey', 'pr1122')";
$result = mysqli_query($db, $query);

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

Обратите внимание, названия таблицы и полей пишутся без кавычек, а значения в кавычках. Запустите OpenServer и выболните данный скрипт. В таблице должна появиться ещё одна запись. Результат Вы можете увидеть с помощью phpMyAdmin. Если она уже открыта, то нужно перезагрузить страницу, то есть открыть владку "Обзор" заново. Только тогда изменения в таблице отобразятся. Скрипт можно запускать несколько раз и каждый раз в таблицу должна добавляться новая запись.

В предыдущем примере данные, которые отправляются в БД, написаны в самом запросе. Однако часто эти данные находятся в переменной и в запросе пишется эта переменная. Здесь есть один важный момент: так как значение пишется в кавычках, то и переменная должна быть в кавычках. Добавим в скрипт отправку ещё одного запроса, но значения в него поместим с помощью переменных:

6
7
8
9
$login = 'Ivan';
$pas = 'iv1010';
$query = "INSERT INTO users (login, pas) VALUES ('$login', '$pas')";
$result = mysqli_query($db, $query);

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

Изменение записи

Для изменения существующей записи используется такой запрос:

UPDATE таблица
SET поле1 = значение1, поле2 = значение2
WHERE условие

Указываются только те поля, значения которых нужно изменить.

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

Напишем запрос, который меняет текст в поле inform в записи, у которой id равно 2. Целесообразно создать новый скрипт, ведь предыдущий будет всё время добавлять записи в базу данных.

3
4
5
$db = mysqli_connect('localhost', 'root', '', 'mybase');
$query = "UPDATE users SET inform='Информация из скрипта' WHERE id=2";
$result = mysqli_query($db, $query);

Ключевое слово WHERE

Очень часто нужно произвести какие-то действия не со всей таблицей, а только с некоторыми записями. Для этого есть ключевое слово WHERE, после которого пишется условие. К тем записям, которые соответствуют условию, применяется дейсвие. Условия применяются к значениям полей. Для них используются обычные операторы сравнения. Например,

WHERE id > 5

WHERE login = 'Nastya11'

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

Чтобы указать "не равно" нужно написать так: <>

WHERE id <> 19

Для указания нескольких условий существуют логические операторы:

AND - логическое "и"

OR - логическое "или"

XOR - исключающее "или"

! - логическое "не"

Пример:

WHERE id >= 10 AND id <= 50

Не обязательно все условия должны относиться к одному полю. Можно применять их к разным полям

Оператор BETWEEN позволяет установить диапазон значений какого-то поля. Ко всем записям, которые попадают в этот диапазон, будет применён запрос. Предыдущее условие можно написать так:

WHERE id BETWEEN 10 AND 50

Также можно применить действие к записям, которые, наоборот, не попадают в установленный диапазон. Для этого перед BETWEEN пишется ключевое слово NOT. Условие пишется так:

WHERE id NOT BETWEEN 10 AND 50

Иногда нужно указать много значений и запрос получается длинный:

WHERE id=2 AND id=5 AND id=9 AND id=17

Существует оператор IN, который позволяет перечислить значения поля через запятую.

WHERE id IN (2, 5, 9, 17)

Удаление записи

Запись удаляется при помощи следующего запроса:

DELETE FROM таблица WHERE условие

Этот запрос вполне понятный. Для примера удалим запись c id, равным 5:

6
7
$query = "DELETE FROM users WHERE id=5";
$result = mysqli_query($db, $query);

Выборка записей

Для того, чтобы получить записи из БД, нужно отправить такой запрос:

SELECT * FROM таблица WHERE условие

В ответ на такой запрос MySQL отправляет результат, который содержит все записи, соответствующие условию. Знак * означает, что в записях, будут все поля, которые есть в таблице. Иногда нужны не все поля, а только их часть. Тогда запрос выглядит так:

SELECT поле1, поле2 FROM таблица WHERE условие

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

Отправим запрос на выборку записей, в которых поле inform не является пустым:

8
9
$query = "SELECT * FROM users WHERE inform != ''";
$result = mysqli_query($db, $query);

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