PHP и MySQL

  • Автор темы PatrickxDDD
  • 126
  • Обновлено
  • 07, Feb 2014
  • #1





SQL и MySQL

Какая между ними разница? SQL - это язык запросов, его мы и будем учить в этом уроке, а MySQL - это СУБД (Система Управления Базами Данных).
Cтруктура MySQL трехуровневая: базы данных — таблицы — записи. Каждая база данных (далее БД) состоит из набора таблиц. В каждой таблице имеются одна или несколько записей.
Лично у меня на сайте одна БД, в которой есть таблицы users и articles. В таблице users у меня хранятся логины, пароли и прочая информация о пользователях. В таблице articles статьи, которые есть на моем сайте.
Логины и пароли - это записи, которые хранятся в таблице users. Название статьи, дата создания статьи и текст статьи - эти записи хранятся в таблице articles. Таблицы users и articles хранятся в БД. Всё просто, не правда ли?

Вообще MySQL клиент-серверная БД. Клиент, например наш PHP-скрипт, посылает серверу SQL-запрос а сервер в свою очередь посылает ответ (результат) клиенту. Давайте научимся писать SQL запросы, готовы?

Подключаемся к MySQL серверу

Для начала нам нужно подключиться к серверу, иначе куда нам посылать запросы?
Для подключения к БД будем использовать функцию mysql_connect("server","username","password") в которой нужно указать три параметра: MySQL сервер (например sql-4.radyx.ru), имя пользователя и пароль.
Предварительно вам нужно создать пользователя для работы с базой данных. Это делается в первую очередь для безопасности, чтобы никто другой не смог подключиться к вашей БД, также для пользователя настраиваются соответствующие привилегии.
Если же ваш MySQL сервер находится на локальном компьютере, например вместе с denwer'ом идет и mysql сервер, то в качестве сервера указывайте localhost, имя пользователя root а строку пароль оставьте пустой, т.к. он отсутствует.
На MySQL сервере может находиться сразу несколько БД, поэтому нам нужно указать к какой именно БД мы хотим подключиться. Для этого существует функция mysql_select_db("база_данных", указатель) которой передается два параметра: база данных, к которой нам нужно подключиться и указатель соединения.

$db = mysql_connect("sqlserver.ru","username","pass");
mysql_select_db("my_database", $db);
?>

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

Готовим площадку для тестирования

Добыть MySQL сервер можно несколькими путями. В первом уроке я писал что для тестирования PHP скриптов вам нужен сервер и взять его можно либо в аренду, либо на бесплатном хостинге, либо установить пакет denwer.
Ну а раз вы дошли до этого урока значит вы где-то тестируете свои скрипты. Если это локальный сервер denwer, то вам повезло, вместе с ним идет и MySQL сервер.
Для создания новой базы данных воспользуемся SQL-запросом CREATE DATABASE db_name. Этот запрос создает новую базу данных с именем db_name. Для удаления БД используем запрос DROP DATABASE db_name, где db_name так же имя базы данных, которую хотим удалить.
Не могу не рассказать вам о такой замечательной штуке как PhpMyAdmin. Это очень удобная программа для работы с базами данных. Запустите денвер и перейдите по адресу http://localhost/tools/phpmyadmin

чтобы попасть в PhpMyAdmin, либо зайдите на свой хостинг в cPanel, там вы так же найдете PhpMyAdmin. Если у вас нет ни того ни другого, то в любой момент можно зарегистироваться на бесплатном хостинге с поддержкой PHP и MySQL.
Через PhpMyAdmin можно создавать базы данных, создавать таблицы, добавлять и редактировать записи, ну а мы с вами через него будем смотреть результат работы наших скриптов.
Дополнительно о том как работать с PhpMyAdmin можно почитать тут. Если вы всё настроили, то переходим к следующему пункту.

Основы языка SQL

Для начала работы нужно создать таблицу.

Это можно сделать либо через PhpMyAdmin, либо SQL-запросом.

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

Давайте зайдем в PhpMyAdmin и создадим таблицу users в которой будет 3 поля - id, login и pass.

В поле id поставьте тип INT и выберите AUTO_INCREMENT, чтобы с каждой новой записью id увеличивался на единицу, но мы ещё к этому вернемся.

Поля login и pass будут иметь тип VARCHAR длиной до 32 символов.

В виде SQL-запроса это будет выглядеть так:

 CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT, 
login VARCHAR(32), 
pass VARCHAR(32) 
); 


Синтаксис запроса достаточно прост: CREATE TABLE имя_таблицы (поле ТИП(кол-во символов), поле ТИП(кол-во символов), поле ТИП(кол-во символов) );
ТИП поля зависит от того, какая информация будет в нём храниться. Если текстовая, не больше чем 255 символов (логин, название статьи) то лучше подойдет тип VARCHAR, если это число то тип INT. Вот тут можно почитать какие типы полей есть в MySQL.
После того как указали тип, для экономии памяти в скобках можно указать максимальную длину, например если в поле login информация будет не больше чем 32 символа, то в скобках указываем 32.

Изучаем SQL-запросы

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

Сейчас разберем SQL-запрос для добавления записи в таблицу. Выглядит он следующим образом:
mysql_query("INSERT INTO таблица (поле1, поле2) VALUES ('значение1', 'значение2')");
После INSERT INTO идет имя таблицы, в которую будем добавлять запись. В скобках через запятую указываются поля, в которые будем вставлять данные. Далее идет ключевое слово values, и после него в скобках через запятую и уже в апострофах указываем данные, которые будем вставлять.
mysql_qery("INSERT INTO users (login, pass) VALUES ('username', 'qwerty') ");
Вы помните что у поля id мы поставили AUTO_INCREMENT? Благодаря этому нам не приходится каждый раз вставлять в поле id номер новой записи, это происходит автоматически.

Удаление записи из таблицы

SQL-запрос для удаления записи будет выглядеть так:
mysql_query("DELETE FROM имя_таблицы WHERE условие");
Допустим нам надо удалить пользователя под ником spamer, для этого и существует ключевое слово WHERE. Мы просто скажем УДАЛИТЬ ИЗ имя_таблицы ГДЕ login='spamer' и нас поймут
mysql_query("DELETE FROM users WHERE login='spamer'");
Условие может иметь другой вид, например: WHERE id='2' или WHERE (id='4') or (login='spamer')

Изменение записи в таблице

mysql_query("UPDATE имя_таблицы SET поле1='значение', поле2='значение' WHERE условие ");
После слова UPDATE идет имя таблицы, далее ключевое слово SET после которого указывается имя поля и значение которое будет вместо старого. Далее идет условие в котором укажем какую запись хотим обновить.
mysql_query("UPDATE users SET login='Егор', pass='123456' WHERE id='6' ");

Конструкция WHERE

При обновлении, удалении или выборке записей из таблицы приходится указывать условие, по которому мы уточняем какую именно запись нужно обновить или удалить. Это мы делаем с помощью конструкции WHERE. У неё есть следующие логические операции:
! (отрицание) - WHERE !(login='spamer')
AND (И) - WHERE (id='4') and (login='spamer')
OR (ИЛИ) - WHERE (id='1') or (pass='123')
XOR (ИСКЛЮЧАЮЩЕЕ ИЛИ) - WHERE (id='1') xor (pass='123')
Можно сразу использовать несколько логических операций:
DELETE FROM users WHERE ((login='spamer') or (pass='qwerty')) and !(id='1') // Будет удалена запись где логин=spamer или пароль=qwerty И id у которого не 1.

Выборка данных

Выборка записей осуществляется с помощью команды SELECT. Давайте рассмотрим пример её использования:
mysql_query("SELECT что_выбрать FROM имя_таблицы");
Вместо "что_выбрать" мы должны указать, какие поля нужно выбрать. Можно выбрать запись из поля login, из поля pass, а можно выбрать всё, указав просто звездочку - *, но если нам нужно выбрать только пароль, то не стоит выбирать всё, дабы не загружать память.
mysql_query("SELECT login,pass FROM users WHERE id='1'"); // выбираем записи из полей login и pass где id равен единице.
Чтобы вывести результат этого запроса на экран, результат нужно записать.

$result = mysql_query("SELECT login,pass FROM users WHERE id='1'");
echo $result['login']; // Так как результат запроса помещается в $result в виде массива, то и обращаться мы будем к нему как к массиву.
?>

Выборка данных с сортировкой

Если вам нужно вытащить много записей и отсортировать по id то выглядеть это будет так:
SELECT * FROM users ORDER BY id
Есть еще такие возможности: DESC - перестраивает результат в обратном порядке. LIMIT число - выбирает из таблицы только указанное кол-во записей.
SELECT * FROM users ORDER BY name (сортировка по имени)
SELECT * FROM users ORDER BY name DESC (в обратном порядке)
SELECT * FROM users ORDER BY name LIMIT 2 (только 2 значения. ЛИМИТ)

Вывод множества значений

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

$myrow = mysql_query("SELECT * FROM users ORDER BY id");
while ( $result = mysql_fetch_array($myrow) ) {
echo $result['login'];
echo '
';
}
?>

mysql_fetch_array() - эта функция с каждым разом сдвигает внутренний указатель на 1, тем самым в $result оказываются всё новые значения.


Итог


Подведем итог, чему же мы научились в этом уроке:
- подключаться к базе данных
- создавать базу данных
- создавать таблицы в базе данных
- добавлять записи в таблицу
- удалять записи в таблицу
- изменять записи
- рассмотрели конструкцию WHERE
- научились делать выборку из БД
- научились сортировать результаты выборки

PatrickxDDD


Рег
12 Jan, 2014

Тем
165

Постов
236

Баллов
1886
Тем
49554
Комментарии
57426
Опыт
552966

Интересно