Sql - запити і їх обробка за допомогою php

SQL - запити і їх обробка за допомогою PHP

Способи звернення до таблиць баз даний MySQL за допомогою мови запитів SQL. SQL - це абревіатура, яка так і "розкривається" - структуризувати мову запитів.
У мові PHP для це цілі існує цілий ряд функцій з префіксом "mysql". Нам для розгляду запитів знадобиться не так багато з них. Функція, без якої в мові PHP виконання SQL-запитів було б просто неможливим:

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

$ Host = 'localhost'; // ім'я хоста (уточнюється у провайдера)
$ Database = 'db_name'; // ім'я бази даних, яку ви повинні створити
$ User = 'user_name'; // заданий вами ім'я користувача, яке визначене провайдером
$ Pswd = 'your_pass'; // заданий вами пароль

$ Dbh = mysql_connect ($ host, $ user, $ pswd) or die ( "Не можу з'єднатися з MySQL.");
mysql_select_db ($ database) or die ( "Не можу підключитися до бази.");

Отже mysql_connect () - функція для підключення до сервера MySQL на Вашому хостингу.
А mysql_select_db () вибирає базу даних на сервері для підключення.
Іншими словами підключаємося до сервера, вибираємо базу і починаємо працювати.
Функція die () викликається в разі помилки і виводить у вікно браузера повідомлення, яке ви вказали.
Для завершення роботи з базами даних використовується функція:

Тут $ dbh - дескриптор, які при з'єднанні повернула функція mysql_connect.
Закінчивши стартовий огляд, почнемо розгляд власне SQL-запитів.
Для цього перш за все вам необхідно створити базу даних з певному ім'ям. А в ній створити таблицю, теж з конкретним ім'ям. У наших прикладах будемо звертатися до таблиці my_sql_table. Щоб створити цю таблицю давайте виконаємо в phpmyadmin нашого localhost наступний запит:

CREATE TABLE `my_sql_table` (
`Id` INT NOT NULL. // ідентифікатор майбутніх записів таблиці
`Firstname` VARCHAR (50) NOT NULL, // текстове поле VARCHAR
`Surname` VARCHAR (50) NOT NULL, // max довжиною 50 символів
PRIMARY KEY ( `id`) // первинний ключ - ідентифікатор id
);

Отже таблиця створена. Виконаємо перший запит, який відразу оформимо у вигляді PHP-коду:

$ Host = 'localhost'; // ім'я хоста (уточнюється у провайдера)
$ Database = 'db_name'; // ім'я бази даних, яку ви повинні створити
$ User = 'user_name'; // заданий вами ім'я користувача, яке визначене провайдером
$ Pswd = 'your_pass'; // заданий вами пароль

$ Dbh = mysql_connect ($ host, $ user, $ pswd) or die ( "Не можу з'єднатися з MySQL.");
mysql_select_db ($ database) or die ( "Не можу підключитися до бази.");
$ Query = "SELECT * FROM` my_sql_table` ";
$ Res = mysql_query ($ query);
while ($ row = mysql_fetch_array ($ res))
echo "Номер:". $ row [ 'id']. "
\ N ";
echo "Ім'я:". $ row [ 'firstname']. "
\ N ";
echo "Прізвище:". $ row [ 'surname']. "


\ N ";
>

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

$ Query = "SELECT * FROM` my_sql_table` ";

Даний запит можна розшифрувати так: вибрати з таблиці my_sql_table БД всі записи з усіх полів. Таким чином знак * після слова SELECT означає "вибрати абсолютно все". Отже, запит сформований. Тепер його треба виконати:

У разі успішного виконання запиту функція mysql_query () поверне нам ідентифікатор ресурсу $ res.
Його ми повинні передати в якості параметра в функцію mysql_fetch_array (). Назва цієї функції говорить сама за себе. Тобто вона формує і видає масив по вибірці з таблиці БД. У разі нашої таблиці масив буде складатися з числа елементів, рівних кількостей записів (рядків) в таблиці і містити значення id, firstname, surname для кожного рядка таблиці. Отже, наступний код:

while ($ row = mysql_fetch_array ($ res))
echo "Номер:". $ row [ 'id']. "
\ N ";
echo "Ім'я:". $ row [ 'firstname']. "
\ N ";
echo "Прізвище:". $ row [ 'surname']. "


\ N ";
>

$ Query = "SELECT firstname FROM` my_sql_table` ";

то це буде означати, що з усіх рядків вибирається тільки значення поля firstname.
Отже попередній код слід переписати як:

$ Res = mysql_query ($ query);
while ($ row = mysql_fetch_array ($ res))
echo "Ім'я:". $ row [ 'firstname']. "
\ N ";
>

Якщо Ви хочете вибрати рядки таблиці з конкретним значенням id де прізвище (surname) буде Петров. то запит перепишеться так:

$ Query = "SELECT id FROM` my_sql_table` where surname = 'Петров' ";

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

$ Query = "SELECT surname FROM` my_sql_table` where id = 5 ";

У цьому випадку Ви знаєте, що результатом запиту буде всього один рядок з таблиці. Тобто немає сенсу організовувати цикл з використанням while. І обробка запиту буде наступною

$ Res = mysql_query ($ query);
$ Row = mysql_fetch_row ($ res);
echo "Прізвище п'ятого людини в списку:". $ row [0]. "\ n";

Тут замість mysql_fetch_array () ми застосували mysql_fetch_row (). Тобто отримати значення поля (або полів) конкретної рядки. Оскільки поле у ​​нас було одне - surname - ми можемо звернутися до єдиного елементу масиву $ row як $ row [0] ;.

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

Отже, розглянемо найбільш типові приклади запитів MySQL. Розгляд проведемо на базі таблиці my_sql_table:
1. Додамо в таблицю my_sql_table поле middle_name (по батькові) після surname:

$ Query = "ALTER TABLE` my_sql_table` ADD `middle_name`
VARCHAR (50) NOT NULL AFTER `surname`";

2. Тепер видалимо поле surname з таблиці my_sql_table:

$ Query = "ALTER TABLE` my_sql_table` DROP `surname`";

3. Видаляємо записи з таблиці my_sql_table з прізвищем Сидоров:

$ Query = "DELETE FROM` my_sql_table` where surname = 'Сидоров' ";

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

$ Query = "SELECT * FROM` my_sql_table` where surname like '% дор%' ";

Тут наявність "%" на початку і кінці 'дор' і означає, що запит буде шукати саме 'дор', причому не важливо на початку, кінці, або середині прізвища він знаходиться. Розглянемо наступний приклад
5. Виберемо записи з таблиці my_sql_table з прізвищем, що починається на П. Зверніть увагу на розташування "%":

$ Query = "SELECT * FROM` my_sql_table` where surname like 'П%' ";

6. Обчислимо максимальне значення id:

$ Query = "SELECT MAX (id) FROM` my_sql_table` ";

7. Обчислимо кількість полів в my_sql_table з прізвищем, що починається на П.

$ Query = "SELECT COUNT (*) FROM` my_sql_table` where surname like 'П%' ";

8. Видалення таблиці my_sql_table:

$ Query = "DROP TABLE` my_sql_table` ";

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