Головна |
У даній статті ми розглянемо способи звернення до таблиць баз даний 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 $ 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']. "Розберемо PHP-код файлу firstsql.php. Почнемо з власне запиту до таблиць бази даних (БД).
$ Query = "SELECT * FROM 'my_sql_table'";Даний запит можна розшифрувати так: вибрати з таблиці my_sql_table БД всі записи з усіх полів. Таким чином знак * після слова SELECT означає "вибрати абсолютно все". Отже, запит сформований. Тепер його треба виконати:
$ Res = mysql_query ($ query);У разі успішного виконання запиту функція mysql_query () поверне нам ідентифікатор ресурсу $ res.
Його ми повинні передати в якості параметра в функцію mysql_fetch_array (). Назва цієї функції говорить сама за себе. Т. е. Вона формує і видає масив по вибірці з таблиці БД. У разі нашої таблиці масив буде складатися з числа елементів, рівних кількостей записів (рядків) в таблиці і містити значення id, firstname, surname для кожного рядка таблиці. Отже, наступний код:
можна прокоментувати так: поки введена нами змінна $ row одержує не нульові результати роботи функції mysql_fetch_row слід видати в броузер значення полів $ Row [ 'id'], $ row [ 'firstname'], $ row [ 'surname'] за допомогою echo.
Якщо запит виконати так:
то це буде означати, що з усіх рядків вибирається тільки значення поля firstname.
Отже попередній код слід переписати як:
Якщо Ви хочете вибрати рядки таблиці з конкретним значенням 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:
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 з прізвищем, що починається на П. Зверніть увагу на розташування "%":
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 досить просто виконати запит:
mysql_query ($ query);Ми розглянули найбільш характерні приклади запитів. Вважаю, з їх допомогою, слідуючи елементарній логіці, Ви зможете виконувати більш складні запити до створених Вами таблицями баз даних MySQL.
Функції отримання інформації про результати SQL-запитів | Базова аутентифікація
конструктори | Спадкування (програмування) | Типи полів бази даних | Примітка | CREATE TABLE | Примітка | ALTER TABLE | DROP TABLE | Функції з'єднання з сервером MySQL | Функції обробки результатів запиту |