Використання mysql у php. Взаємодія PHP та MySQL. Максимальне та мінімальне значення у стовпці

4.5K

У тексті використано переклад офіційної документації, зроблений Всеросійським клубом Веб-Майстрів.

Вся робота з базами даних зводиться до підключення до сервера, вибору бази даних, посилки запиту, обробки запиту та відключення від баз. Отже, розглянемо всю цю справу за пунктами. Для наочності всього тексту уявімо що на локальній машині встановлений сервер MySQL. Порт для роботи із ним стандартний. Для підключення будемо використовувати ім'я користувача root і пароль no_one.

Підключення

Підключення до бази даних здійснюється за допомогою функції mysql_connect(). Їй передається три параметри: ім'я сервера (або ім'я сервера: порт для підключення), ім'я користувача та пароль. У разі, якщо буде зроблено другий виклик «mysql_connect()» з тими самими аргументами, ніякий новий зв'язок не встановиться - натомість буде повернуто ідентифікатор зв'язку вже відкритого зв'язку (тобто робота продовжиться з тією ж базою даних). Якщо ви працюєте лише з однією базою даних, то ідентифікатор з'єднання не потрібно створювати. Як тільки виконання сценарію закінчиться, зв'язок із сервером закриється, якщо воно не було явно закрите раніше викликом «mysql_close()».

Приклад: $connect = mysql_connect('localhost', 'root', 'no_one'); У цьому випадку змінна $connect є ідентифікатором з'єднання. Якщо робота ведеться тільки з однією базою, то код пишеться без ідентифікатора: mysql_connect('localhost', 'root', 'no_one');

Вибір бази даних

"mysql_select_db" - вибирає базу даних MySQL. Це означає, що на сервері може бути не одна база даних, а кілька. Цією командою ми виберемо ту, яку треба (на яку ми маємо права). Параметром цієї функції є базове ім'я. Вибрана таким чином база стає активною та зв'язується з певним ідентифікатором. Якщо ідентифікатор зв'язку не визначено, використовується останнє підключення до бази.

Приклад: mysql_select_bd('test', $connect); - де test це ім'я бази даних, а $connect це ідентифікатор з'єднання. Якщо робота ведеться тільки з однією базою, то код пишеться без ідентифікатора: mysql_select_bd('test');

Надсилаємо запит

mysql_query() посилає запит до бази даних, до теперішнього часу активної на сервері, який пов'язаний з певним ідентифікатором зв'язку. Якщо ідентифікатор не вказано, використовується останній відкритий зв'язок. Параметром цієї функції є рядок із запитом sql.

Приклад: $ tmp = mysql_query ( "slect * from table", $ connect); - ця команда видасть весь вміст таблиці table з активної бази даних, на яку вказує ідентифікатор $connect. Якщо робота ведеться тільки з однією базою, то код пишеться без ідентифікатора: $tmp=mysql_query(«slect * from table»);

Опрацювання запиту

Існує кілька функцій для обробки запитів. Вибір того чи іншого методу обробки запитів залежить від стилю програмування, завдання. Слід також враховувати, що різні варіанти по-різному «завантажують» сервер (деякі деякі не дуже). Розберемо кілька із них.
mysql_fetch_object - повертає об'єкт php як результат обробки. Цей метод хороший для тих, хто звик до об'єктного програмування
Приклад: while($result= mysql_fetch_object($tmp)) echo($result->name);

MySQL – це один із типів реляційних баз даних. MySQL є сервером, до якого можуть підключатися різні користувачі.

Ви коли до інтернету підключаєтеся, ви вводите логін і пароль, а також ім'я сервера до якого підключаєтеся? При роботі з MySQL використовується така сама система.

Ще один момент: що таке реляційна база даних? Реляційна – означає заснована на таблицях. Знаменитий редактор електронних таблиць Excel від Microsoft є редактором реляційних баз даних.

Підключення до сервера MySQL

Для підключення до сервера MySQL PHP використовується функція mysqli_connect() . Ця функція отримує три аргументи: ім'я сервера, ім'я користувача та пароль.

Функція mysqli_connect() повертає ідентифікатор підключення, його зберігають у змінній та надалі використовують для роботи з базами даних.

Код підключення до сервера MySQL:

$link = mysqli_connect("localhost", "root", "");

В даному випадку я працюю на локальному комп'ютері на Denwere, тому ім'я хоста localhost, ім'я користувача root, а пароля немає.

З'єднання також потрібно закрити після завершення роботи з MySQL. Для закриття з'єднання використовується функція mysqli_close(). Розширюємо приклад:

$link = mysqli_connect("localhost", "root", ""); if (! $ link) die ( "Error"); mysqli_close($link);

Тут ми перевірили ідентифікатор підключення на істинність, якщо з нашим підключенням щось не так, то й програма виконуватися не буде, функція die() зупинить її виконання та виведе у браузер повідомлення про помилку.

Помилки підключення

Для перевірки підключення використовуються такі функції:

  • mysqli_connect_errno() - повертає код помилки останньої спроби з'єднання. За відсутності помилок повертає нуль.
  • mysqli_connect_error() - повертає опис останньої помилки підключення до MySQL.
define ("HOST", "localhost"); define ("DB_USER", "root"); define ("DB_PASSWORD", ""); define ("DB", "tester"); $link = mysqli_connect(HOST, DB_USER, DB_PASSWORD, DB); /* перевірка з'єднання */ if (mysqli_connect_errno()) ( printf("Не вдалося підключитися: %s\n", mysqli_connect_error()); exit(); ) else ( printf("Вдалося підключитися: %s\n", mysqli_get_host_info($link));

Функція mysqli_get_host_info() повертає рядок, що містить тип з'єднання, що використовується.

Також зверніть увагу, за допомогою команди define я всі параметри підключення зберіг у константах. Коли ви писатимете великі проекти, і підключиться до сервера MySQL буде багато файлів, то зручно зберігати параметри з'єднання в окремому файлі і вставляти його за допомогою функції include або require .

Вибір бази даних

На сервері MySQL може бути кілька баз даних. Насамперед нам потрібно вибрати для роботи потрібну нам базу. У PHP для цього функції mysqli_connect() є ще один параметр - ім'я бази даних.

Я створив себе на комп'ютері через phpMyAdmin з ім'ям tester. Підключаємося до неї:

$link = mysqli_connect("localhost", "root", "", "tester"); if (! $ link) die ( "Error"); mysql_close($link);

Отже, ми вибрали для роботи базу даних. Але, як відомо, реляційна база даних складається з таблиць, а нашій базі даних таблиць поки що немає. База даних створюється порожня, без таблиць. Таблиці до неї потрібно додати окремо. Ось давайте додамо до неї таблицю засобами PHP.

Створюємо таблицю

У назві баз даних MySQL частина SQL означає Structured Query Language, що перекладається як структурована мова запитів. Мовою SQL ми будемо писати запити і з програми PHP посилати їх серверу MySQL.

Щоб створити таблицю, нам просто потрібно вказати команду CREATE TABLE. Давайте створимо таблицю з ім'ям users в стовпцях якої зберігатимуться логіни (стовпець login) та паролі (стовпчик password) користувачів.

$query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))";

У цьому коді ми надали змінній $query рядок тексту, який є запитом SQL. Ми створюємо таблицю з ім'ям users, яка містить два стовпці login та password, в обох типах даних VARCHAR(20). Про типи даних ми поговоримо пізніше, зараз зазначу, що VARCHAR(20) - це рядок максимальної довжини 20 символів.

Щоб надіслати наш запит на сервер MySQL, ми використовуємо PHP функцію mysqli_query() . Ця функція повертає позитивне число, якщо операція пройшла успішно і false, якщо сталася помилка (синтаксис запиту помилковий або програма не має прав на виконання запиту).

$link = mysqli_connect("localhost", "root", "", "tester"); if (! $ link) die ( "Error"); $query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))"; mysqli_query($query); mysqli_close($link);

Запит SQL не обов'язково записувати змінну, його можна відразу записати як аргумент функції mysql_query() . Просто так код виявить читабельніше.

Цей скрипт має один недолік - він нічого не виводить у браузер. Давайте додамо повідомлення:

$link = mysqli_connect("localhost", "root", "", "tester"); if (! $ link) die ( "Error"); $query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))"; if (mysqli_query($query)) echo "Таблиця створена."; else echo "Таблиця не створена"; mysqli_close($link);

Якщо ми повторно запустимо цей скрипт на виконання, побачимо у браузері повідомлення: "Таблиця не створена". Справа в тому, що таблиця була створена при першому запуску, а повторно неможливо створити таблицю з таким самим ім'ям. Ми зіткнулися з ситуацією виникнення помилки, отже настав час поговорити про обробку помилок під час роботи з MySQL.

Обробка помилок

При налагодженні програми нам знадобиться точна інформація про помилку. Коли MySQL відбувається помилка, то сервер бази даних встановлює номер помилки і рядок з її описом. Для доступу до цих даних PHP є спеціальні функції.

  • mysqli_errno() – повертає номер помилки.
  • mysqli_error() - повертає рядок із описом помилки.

Тепер давайте додамо функцію mysql_error() у наш скрипт:

$link = mysql_connect("localhost", "root", "", "tester"); if (! $ link) die ( "Error"); $query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))"; if (mysqli_query($query)) echo "Таблиця створена."; else echo "Таблиця не створена: ".mysqli_error(); mysqli_close($link);

Тепер наш скрипт поверне в браузер рядок: "Таблиця не створена: Table "users" already exists".

Видалення таблиці

Отже, ми маємо не потрібну нам таблицю. Настав час навчитися видаляти таблиці з бази даних.

Для видалення таблиці використовується команда DROP TABLE , за якою слідує ім'я таблиці.

$link = mysqli_connect("localhost", "root", "", "tester"); if (! $ link) die ( "Error"); $query = "DROP TABLE users"; if (!mysqli_query($query)) echo "Помилка при видаленні таблиці: ".mysqli_error(); else echo "Таблиця видалена."; mysqli_close($link);

Підсумки

Отже, ми опанували основи MySQL. Що ми навчилися робити:

  • Підключатися до бази MySQL за допомогою функції mysqli_connect() .
  • Закривати з'єднання з сервером MySQL за допомогою mysqli_close() .
  • Надсилати SQL запити серверу MySQL за допомогою функції mysqli_query().
  • Ми дізналися SQL запит створення таблиці: create table.
  • Ми дізналися SQL запит видалення таблиці: drop table.
  • Ми дізналися як обробляти помилки за допомогою функцій mysqli_errno() та mysqli_error() .

Далі ми докладно розглянемо типи даних MySQL.

Читаємо наступний урок:

Ми навчилися підключатися серверу MySQL, вибирати базу даних для роботи, дізналися PHP-функцію відправки запитів серверу MySQL, дізналися два найпростіших запити (створення та видалення таблиці), та й дізналися як закривати з'єднання.

Тепер ми глибше вивчатимемо запити MySQL. Отже, почнемо!

Створення таблиці – CREATE TABLE

Нині ми маємо порожню базу даних, у ній немає таблиць. Тому спочатку створимо таблицю. Ми вже знаємо, як це робити з першої частини.

Ось код скрипта, який створить потрібну нам табличку:

$link = mysqli_connect("localhost", "root", "", "tester"); if (! $ link) die ( "Error"); $query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))"; if (mysqli_query($link, $query)) echo "Таблиця створена."; else echo "Таблиця не створена: ".mysqli_error(); mysqli_close($link);

У нашій таблиці лише два поля: логін та пароль. Поки що нам більше не потрібно, не ускладнюватимемо процес.

Отже, таблицю створено.

Додавання рядків (записів) до таблиці - INSERT

Додати новий рядок в таблицю можна за допомогою команди SQL insert. Ось приклад:

$link = mysqli_connect("localhost", "root", "", "tester"); if (! $ link) die ( "Error"); $query = "INSERT INTO users (login, password) VALUE ("zeus", "pass123")"; if (mysqli_query($link, $query)) echo "Користувач доданий."; else echo "Користувач не додано: " . mysqli_error(); mysqli_close($link);

SQL запит складається з команди INSERT INTO , імені бази даних users, потім у дужках йдуть імена полів, потім слово VALUE , після якого у дужках слідують значення, що додаються. Значення беруться у лапки.

Синтаксис запиту виглядає так:

INSERT INTO Назва_таблиці (стовпець1, стовпець2) VALUE ("х1", "х2")

Кавички у других дужках є обов'язковими.

На місці значень можуть бути змінні. Ось приклад:

$link = mysqli_connect("localhost", "root", "", "tester"); if (! $ link) die ( "Error"); $ login = "zeus"; $password = "pass123"; $query = "INSERT INTO users (login, password) VALUE ("$login", "$password")"; if (mysqli_query($link, $query)) echo "Користувач доданий."; else echo "Користувач не додано: " . mysqli_error(); mysqli_close($link);

Звісно, ​​у цьому прикладі мало сенсу. Можливо, новачкам буде корисно почути, що так у базу даних записуються логіни та паролі, які повідомляють користувачі під час реєстрації. Ці дані зберігаються в змінних, потім після перевірки записуються в базу.

Існує швидкий спосіб вставки кількох рядків одним запитом INSERT:

INSERT INTO users (login, password) VALUE ("bob", "eee333"), ("Rooki", "12345"), ("magy", "olol88e8")

Як бачимо, дані, що перераховуються, просто відокремлені комами.

Отже, за допомогою команди INSERT ми навчилися додавати записи до таблиці. Йдемо далі.

Перегляд таблиці: команда SELECT

Тепер у нас є таблиця users, де є рядки. Минулий скрипт можна запустити кілька разів, і щоразу він додаватиме рядок до таблиці. Тепер ми можемо не знати, скільки у нас рядків у таблиці. А хочеться знати, що в нас в ній записано.

Для отримання даних із таблиці використовується SQL-команда SELECT . Знак * означає, що ми запитуємо всі дані, потім після слова FROM пишемо ім'я таблиці, з якої хочемо отримати дані.

Запросимо всі дані з таблиці users:

$link = mysqli_connect("localhost", "root", "", "tester"); if (! $ link) die ( "Error"); $query = "SELECT * FROM users"; $result = mysqli_query($link, $query); if (!$result) echo "Сталася помилка: " . mysqli_error(); else echo "Дані отримані"; mysqli_close($link);

Функція mysqli_query() повернула нам ідентифікатор результату запиту - ми його поміщаємо в змінну і будемо працювати з ним за допомогою інших функцій PHP.

Кількість записів у запиті

Давайте визначимо, скільки рядків у нашому запиті? Я ось запустив скрипт додавання запису до таблиці сам не пам'ятаю скільки разів і тепер не знаю скільки рядків у моїй таблиці.

Для визначення числа рядків у результаті запиту використовують функцію mysqli_num_rows(). Цій функції передається ідентифікатор результату запиту, а вона поверне число записів.

$link = mysqli_connect("localhost", "root", "", "tester"); if (! $ link) die ( "Error"); $query = "SELECT * FROM users"; $result = mysqli_query($link, $query); if (!$result) echo "Сталася помилка: " . mysqli_error(); else echo "Дані отримані"; $count = mysqli_num_rows($result); echo "Усього рядків у таблиці: $count."; mysqli_close($link);

Якщо нам потрібно дізнатися кількість записів у таблиці, то наведений спосіб не найкращий. Тут ми дізналися кількість записів, знайдених у запиті, але кількість записів у таблиці шукається інакше.

Число записів у таблиці SELECT COUNT(*)

Щоб дізнатися кількість записів у таблиці, можна скористатися командою SELECT COUNT(*) FROM имя_таблицы.

$link = mysqli_connect("localhost", "root", ""); if (! $ link) die ( "Error"); mysqli_select_db("tester"); $query = "SELECT * FROM users"; $result = mysqli_query($link, $query); if (!$result) echo "Сталася помилка: " . mysqli_error(); else echo "Дані отримані."; $count = mysqli_fetch_row($result); echo "Усього рядків у таблиці: $count."; mysqli_close($link);

Зверніть увагу тут ми використовували нову функцію PHP mysqli_fetch_row() для отримання даних. Ця функція повертає ряд результату запиту у формі простого масиву, в нашому випадку в ряду одне поле і має індес 0.

Перегляд результату запиту у циклі

Після виконання SQL-запиту з командою SELECT та отримання ідентифікатора результату запиту, PHP створює у наборі записів результату внутрішній покажчик. Цей вказівник автоматично переміщується на наступний запис після звернення до поточного запису. Завдяки цьому механізму набір результату запиту SELECT дуже зручно переглядати у циклі.

У PHP є кілька функцій, за допомогою яких можна для кожного рядка результуючого запиту отримати масив, що складається з її полів. Наприклад візьмемо функцію mysqli_fetch_row(). Цій функції передають ідентифікатор запиту, а вона повертає масив. Так у циклі проглядається весь результат запиту, після досягнення кінця результату запиту функція поверне false .

Отже, запитуємо всі дані з таблиці users (SELECT * FROM users).


"; while ($row = mysqli_fetch_row($result)) ( echo "Логін: $row. Пароль: $row.
"; ) mysqli_close($link);

Функція mysqli_fetch_row() повертає простий масив. У кожній ітерації циклу ми отримаємо масив з рядком таблиці, доступ до полів якої ми можемо отримати вказавши числовий індекс.

Те саме можна зробити використовуючи функцію mysql_fetch_assoc() , вона повертає асоціативний масив.

$link = mysqli_connect("localhost", "root", ""); if (! $ link) die ( "Error"); mysqli_select_db("tester"); $result = mysqli_query($link, "SELECT * FROM users"); if (!$result) echo "Сталася помилка: " . mysqli_error(); else echo "Дані отримані.
"; while ($row = mysqli_fetch_assoc($result)) ( echo "Логін: $row. Пароль: $row.
"; ) mysqli_close($link);

Також є функції mysqli_fetch_array() – повертає будь-який тип масиву, і mysqli_fetch_object() – повертає об'єкт.

Запит SELECT DISTINCT – унікальні значення полів

Давайте створимо нову таблицю:

$link = mysqli_connect("localhost", "root", ""); if (! $ link) die ( "Error"); mysqli_select_db("tester"); // Видаляємо існуючу таблицю mysqli_query ($ link, "DROP TABLE users"); // створюємо нову таблицю $query = "CREATE TABLE users(name VARCHAR(20), surname VARCHAR(20), age TINYINT UNSIGNED)"; if (mysqli_query($link, $query)) echo "Таблиця створена.
else echo "Таблиця не створена: " . mysqli_error(); // функція для додавання записів до таблиці : " . mysqli_error(); ) // додаємо записи add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ("Max", "Jayson", "33")"); add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ("Bob", "Freeman", "26")"); "Lopes", "65")"); INSERT INTO users (name, surname, age) VALUE ("Serg", "Borman", "43")"); Lopes", "21")"); // виводимо зміст таблиці в браузер $result = mysqli_query($link, "SELECT * FROM users"); if (!$result) echo "Сталася помилка: ". mysqli_error(); else echo "Дані отримані.
"; while ($row = mysqli_fetch_assoc($result)) ( echo "Ім'я: $row. Прізвище: $row. Вік: $row.
"; ) mysqli_close($link);

Отже, ми маємо нову, складнішу таблицю з унікальними записами. Зараз давайте подивимося, скільки ми маємо в базі даних.

$link = mysqli_connect("localhost", "root", ""); if (! $ link) die ( "Error"); mysqli_select_db("tester"); $result = mysqli_query($link, "SELECT DISTINCT name FROM users"); echo "Усього назв: " . mysqli_num_rows($result)."
"; echo "Список імен:
"; while ($name = mysqli_fetch_row($result)) ( echo "$name
"; ) mysqli_close($link);

SQL-запит " SELECT DISTINCT name FROM users " повернув результат з усіма унікальними іменами нашій таблиці. Кожне унікальне ім'я у новому рядку результату запиту.

Сортування результатів - ORDER BY

Додавши до SQL-запиту команду ORDER BY, ми сортуємо результат запиту за зростанням (цифри та літери за алфавітом). Ось приклад, у якому можна порівняти звичайний запит та відсортований за віком (пол. age).



"; ) echo "Сортуємо за віком:
"; $result = mysqli_query($link, "SELECT * FROM users ORDER BY age"); while ($line = mysqli_fetch_row($result)) ( echo "Ім'я: $line. Прізвище: $line. Вік: $line.
"; ) mysqli_close($link);

Можете замінити поле age у команді ORDER BY на полі name та переглянути результат.

Щоб сортувати результат запиту у зворотному порядку, використовуйте команду ORDER BY age DESC .

Відповідність умові - WHERE

Додавши до SQL-запиту команду WHERE, ми запросимо лише ті записи, які відповідають умові. Наприклад, зробимо запит на людей молодших 30 років.

Для цього використовуємо SQL-запит " SELECT * FROM users WHERE age

$link = mysqli_connect("localhost", "root", ""); if (! $ link) die ( "Error"); mysqli_select_db("tester"); echo "Люди молодші 30:
$result = mysqli_query($link, "SELECT * FROM users WHERE age<30"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
"; ) mysqli_close($link);

Також ми можемо відразу відсортувати результат за зростанням age:
" SELECT * FROM users WHERE age<30 ORDER BY age ".

Якщо ми зробимо запит " SELECT name FROM users WHERE age<30 ORDER BY age ", то в результате нам вернут только значения поля "name", но они также будут отсортированы по age.

Ми можемо запитати значення двох полів: " SELECT name, age FROM users WHERE age

Тепер запитаємо всіх користувачів з ім'ям "Max".

$link = mysqli_connect("localhost", "root", ""); if (! $ link) die ( "Error"); mysqli_select_db("tester"); echo "Всі Макси:
"; $result = mysqli_query($link, "SELECT * FROM users WHERE name="Max""); while ($line = mysqli_fetch_row($result)) ( echo "Ім'я: $line. Прізвище: $line. Вік: $line.
"; ) mysqli_close($link);

І ще приклад запиту, - вибере лише імена (name) з таблиці users, крім Max.

SELECT name FROM users WHERE name!="Max"

На цьому із запитом WHERE все.

Обмеження записів - LIMIT

Додавши до SQL-запиту команду LIMIT ми обмежимо розмір результату.

Запит, який виводить перші три записи: "SELECT * FROM users LIMIT 3". Давайте подивимося як він працює:

$link = mysqli_connect("localhost", "root", ""); if (! $ link) die ( "Error"); mysqli_select_db("tester"); echo "Зміст таблиці:
"; $result = mysqli_query($link, "SELECT * FROM users"); while ($line = mysqli_fetch_row($result)) ( echo "Ім'я: $line. Прізвище: $line. Вік: $line.
";) echo "

Перші три записи:
"; $result = mysqli_query($link, "SELECT * FROM users LIMIT 3"); while ($line = mysqli_fetch_row($result)) ( echo "Ім'я: $line. Прізвище: $line. Вік: $line.
";) echo "

Другі три записи:
"; $result = mysqli_query($link, "SELECT * FROM users LIMIT 3, 3"); while ($line = mysqli_fetch_row($result)) ( echo "Ім'я: $line. Прізвище: $line. Вік: $line .
"; ) mysqli_close($link);

Також тут ми використовували запит: "SELECT * FROM users LIMIT 3, 3". Друга трійка вказує усунення в результаті запиту.

Відповідність шаблону - LIKE

Мова SQL підтримує прості шаблони. Для цього використовується команда LIKE і шаблон задається за допомогою символу %.

Ось приклад запиту, який поверне всі записи з іменами, що починаються буквою S.

SELECT * FROM users WHERE name LIKE "S%"

Тестую запит:

$link = mysqli_connect("localhost", "root", ""); if (! $ link) die ( "Error"); mysqli_select_db("tester"); echo "Зміст таблиці:
"; $result = mysqli_query($link, "SELECT * FROM users"); while ($line = mysqli_fetch_row($result)) ( echo "Ім'я: $line. Прізвище: $line. Вік: $line.
";) echo "

Імена на букву S:
$result = mysqli_query($link, "SELECT * FROM users WHERE name LIKE "S%""); while ($line = mysqli_fetch_row($result)) ( echo "Ім'я: $line. Прізвище: $line. Вік : $line.
"; ) mysqli_close($link);

Ось приклад запиту, який поверне всі записи із прізвищами, що закінчуються на літеру s.

SELECT * FROM users WHERE name LIKE "%s"

Відповідність умові - IN

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

Наприклад, нас цікавлять люди з віком 21, 26 та 33 роки.

SELECT * FROM users WHERE age IN (21,26,33)

Тестую запит:

$link = mysqli_connect("localhost", "root", ""); if (! $ link) die ( "Error"); mysqli_select_db("tester"); echo "Зміст таблиці:
"; $result = mysqli_query($link, "SELECT * FROM users"); while ($line = mysqli_fetch_row($result)) ( echo "Ім'я: $line. Прізвище: $line. Вік: $line.
";) echo "

Люди, з необхідним віком (21, 26, 33):
$result = mysqli_query($link, "SELECT * FROM users WHERE age IN (21, 26, 33)"); while ($line = mysqli_fetch_row($result)) ( echo "Ім'я: $line. Прізвище: $ line Вік: $line.
"; ) mysqli_close($link);

Максимальне та мінімальне значення у стовпці

Вибирає максимальне значення 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 = "3"

У нашій таблиці немає поля id, тому цей запит не спрацює на ній. Але це поле, що містить унікальні номери рядків, ми обов'язково вивчимо.

Видалити запис - DELETE

Запит до бази даних MySQL для видалення запису:

DELETE FROM users WHERE id = "10"

Знову ж таки, в нашій таблиці немає поля id. Але ми можемо видалити з неї всіх людей, молодших 18 років.

DELETE FROM users WHERE age< "18"

Видалити таблицю - 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

Перейменування стовпця - 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.

СУБД MySQL- Одна з безлічі баз даних, що підтримуються в PHP. Система MySQL поширюється безкоштовно і має достатню потужність для вирішення реальних завдань.

Короткий вступ у MySQL

SQL- це абревіатура від слів Structured Query Languageщо означає структуровану мову запитів. Ця мова є стандартним засобом доступу до різних баз даних.

Система MySQL є сервером, до якого можуть підключатися користувачі віддалених комп'ютерів.

Для роботи з базами даних зручно користуватися засобом, що входить до комплекту Web-розробника: Denwer phpMyAdmin. Тут можна створити нову базу даних, створити нову таблицю у вибраній базі даних, заповнити таблицю даними, а також додавати, видаляти та редагувати дані.

У MySQL визначено три базові типи даних: числовий, дата і час і малий. Кожна з цих категорій поділяється на безліч типів. Основні з них:


Кожен стовпець після свого типу даних містить інші специфікатори:

ТипОпис
NOT NULLУсі рядки таблиці повинні мати значення у цьому атрибуті. Якщо не вказано, поле може бути пустим (NULL)
AUTO_INCREMENTСпеціальна можливість MySQL, яку можна використовувати в числових стовпцях. Якщо під час вставлення рядків у таблицю залишати таке поле порожнім, MySQL автоматично генерує унікальне значення ідентифікатора. Це значення буде на одиницю більше максимального значення, яке вже існує в стовпці. У кожній таблиці може бути не більше одного такого поля. Стовпці з AUTO_INCREMENT мають бути проіндексованими
PRIMARY KEYСтовпець є первинним ключем для таблиці. Дані в цьому стовпці мають бути унікальними. MySQL автоматично індексує цей стовпець
UNSIGNEDПісля цілого типу означає, що його значення може бути або позитивним, або нульовим
COMMENTНазва стовпця таблиці

Створення нової бази даних MySQL CREATE DATABASE.

CREATE DATABASE IF NOT EXISTS `base` DEFAULT CHARACTER SET cp1251

Створення нової таблиціздійснюється за допомогою SQL-команди CREATE TABLE. Наприклад, таблиця books для книгарні міститиме п'ять полів: ISBN, автор, назва, ціна та кількість екземплярів:

CREATE TABLE books (ISBN CHAR(13) NOT NULL, PRIMARY KEY (ISBN), author VARCHAR(30), title VARCHAR(60), price FLOAT(4,2), quantity TINYINT UNSIGNED); Щоб уникнути повідомлення про помилку, якщо таблиця вже є, необхідно змінити перший рядок, додавши фразу "IF NOT EXISTS": CREATE TABLE IF NOT EXISTS books ...

Для створення автооновлюваного поляз поточною датою типу TIMESTAMP або DATETIME використовуйте таку конструкцію:

CREATE TABLE t1 (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

Додаванняданих у цю таблицю здійснюється за допомогою SQL-команди INSERT. Наприклад:

INSERT INTO books (ISBN, author, title, price, quantity) VALUES ("5-8459-0184-7", "Зандстра Мет", "Освій самостійно PHP4 за 24 години", "129", "5");

Для отримання даних з таблиці служить оператор SELECT. Він отримує дані з бази, вибираючи рядки, які відповідають заданому критерію пошуку. Оператор SELECT супроводжує чималу кількість опцій та варіантів використання.

Символ * означає, що потрібні всі поля. Наприклад:

SELECT * FROM books;

Для отримання доступу лише до деякого поля слід зазначити його ім'я в інструкції SELECT. Наприклад:

SELECT author, title, price FROM books;

Щоб отримати доступ до підмножини рядків у таблиці, слід зазначити критерій вибору, який встановлює конструкція WHERE. Наприклад, щоб вибрати наявні недорогі книги про PHP, треба скласти запит:

SELECT * FROM books WHERE price % Відповідає будь-якій кількості символів, навіть нульових
_ Відповідає рівно одному символу

Для того, щоб рядки, витягнуті на запит, перераховувалися в певному порядку, використовується конструкція ORDER BY. Наприклад:

SELECT * FROM books ORDER BY price;

За замовчуванням порядок сортуванняйде за зростанням. Змінити порядок сортування на зворотний можна за допомогою ключового слова DESC:

SELECT * FROM books ORDER BY price DESC;

Сортуватиможна і по кількох стовпцях. Замість назв стовпців можна використовувати їх порядкові номери:

SELECT * FROM books ORDER BY 4, 2, 3;

Для зміни раніше записаних у таблицю значень потрібно скористатися командою UPDATE. Наприклад, ціну всіх книг підвищили на 10%:

UPDATE books SET price = price * 1.1;

Конструкція WHERE обмежить роботу UPDATE певним рядком. Наприклад:

UPDATE books SET price = price * 1.05 WHERE price

Для видалення рядків із бази даних використовується оператор DELETE. Непотрібні рядки вказуються за допомогою конструкції WHERE. Наприклад, якісь книги продано:

DELETE FROM books WHERE quantity = 0;

Якщо потрібно видалити всі записи

TRUNCATE TABLE table_name

Для повного видалення таблиці використовується:

DROP TABLE table_name

Зв'язок PHP з базою даних MySQL

Попрацювавши з phpMyAdmin над створенням бази даних, можна розпочати підключення цієї бази даних до зовнішнього Web-інтерфейсу.

Щоб отримати доступ до бази даних з Web, використовуючи PHP, потрібно зробити такі основні кроки:

  • Підключення до сервера MySQL.
  • Вибір бази даних.
  • Виконання запиту до бази даних:
    • додавання;
    • видалення;
    • зміна;
    • пошук;
    • сортування.
  • Отримання результату запиту.
  • Від'єднання від бази даних.

Для підключення до сервера бази даних у PHP є функція mysql_connect(). Її аргументи: ім'я комп'ютера, ім'я користувача та пароль. Ці аргументи можна опустити. За промовчанням ім'я комп'ютера = localhost , тоді ім'я користувача та пароль не потрібно. Якщо PHP використовується в поєднанні з сервером Apache, можна скористатися функцією mysql_pconnect(). У цьому випадку з'єднання з сервером не зникає після завершення роботи програми або виклику функції mysql_close(). Функції mysql_connect()і mysql_pconnect()повертають ідентифікатор з'єднання, якщо все пройшло успішно. Наприклад:

$link = mysql_pconnect(); if (!$link) die ("Неможливе підключення до MySQL");

Після встановлення з'єднання з сервером MySQL потрібно вибрати базу даних. Для цього використовується функція mysql_select_db(). Її аргумент: ім'я бази даних. Функція повертає true, якщо вказана база даних існує і доступ до неї можливий. Наприклад:

$ db = "sample"; mysql_select_db ($db) or die ("Неможливо відкрити $db");

Для додавання, видалення, зміни та вибору даних потрібно сконструювати та виконати запит SQL. Для цього у мові PHP існує функція mysql_query(). Її аргумент: рядок із запитом. Функція повертає ідентифікатор запиту.

Приклад 1

Додавання запису до таблиці

При кожному виконанні прикладу 1 таблицю буде додаватися новий запис, що містить одні й ті самі дані. Зрозуміло, має сенс додавати в базу дані, введені користувачем.

У прикладі 2.1 наведено HTML-форму для додавання нових книг до бази даних.

Приклад 2.1

HTML-форма додавання нових книг
ISBN
Автор
Назва
Ціна
Кількість


Результати заповнення цієї форми передаються до insert_book.php.

Приклад 2.2

Програма додавання нових книг (файл insert_book.php) Будь ласка, поверніться назад і закінчіть введення"); ) $isbn = trim ($_POST["isbn"]); $author = trim ($_POST["author"]); $title = trim ($_POST["title" ]) ; $isbn = addslashes ($isbn); $author = addslashes ($author); $title = addslashes ($title) ; die ("Неможливе підключення до MySQL"); mysql_select_db ($db) or die ("Неможливо відкрити $db"); $query = "INSERT INTO books VALUES ("". "", "".$title."", "" .floatval($_POST["price"])."", "".intval($_POST["quantity"])."")"; = mysql_query ($query); if ($result) echo "Книга додана до бази даних."; mysql_close ($link); ?>

У прикладі 2.2 введені рядкові дані оброблені функцією addslashes(). Ця функція додає зворотні сліші перед одинарними лапками ("), подвійними лапками ("), зворотним слешем (\) і null-байтом. Справа в тому, що за вимогами систаксису запитів баз даних такі символи повинні полягати в лапки.

Для визначення кількості записів у результаті запиту використовується функція mysql_num_rows().

Усі записи результату запиту можна переглянути у циклі. Перед цим за допомогою функції mysql_fetch_для кожного запису одержують асоціативний масив.

У прикладі 3.1 наведено HTML-форму для пошуку певних книг у базі даних.

Приклад 3.1

HTML-форма пошуку книг
Шукаємо по:

Що шукаємо:



Результати заповнення цієї форми передаються до search_book.php.

Приклад 3.2

Будь ласка, поверніться назад і закінчіть введення"); $searchterm = addslashes ($searchterm); $link = mysql_pconnect (); if (!$link) die ("Неможливе підключення до MySQL"); ($db) or die ("Неможливо відкрити $db"); $query = "SELECT * FROM books WHERE " .$_POST["searchtype"]." like "%".$searchterm."%""; $result = mysql_query ($query); $n = mysql_num_rows ($result); for ($i=0; $i<$n; $i++) { $row = mysql_fetch_array($result); echo "

".($i+1). $row["title"]. "



"; ) if ($n == 0) echo "Нічого не можемо запропонувати. Вибачте"; mysql_close ($link); ?>

Альтернативний варіант

Програма пошуку книг (файл search_book.php) Будь ласка, поверніться назад і закінчіть введення"); $searchterm = addslashes ($searchterm); mysql_connect() or die ("Неможливе підключення до MySQL"); result = mysql_query ("SELECT * FROM books WHERE ".$_POST["searchtype"]." like "%".$searchterm."%""); $i=1; while($row = mysql_fetch_array($result) ) ( echo "

".($i++) . $row["title"]."
"; echo "Автор: ".$row["author"]."
"; echo "ISBN: ".$row["ISBN"]."
"; echo "Ціна: ".$row["price"]."
"; echo "Кількість: ".$row["quantity"]."

"; ) if ($i == 1) echo "Нічого не можемо запропонувати. Вибачте"; mysql_close(); ?>

Отже, як працює архітектура Web-баз даних:

  1. Веб-браузер користувача видає HTTP-запит певної Web-сторінки. Наприклад, користувач, використовуючи HTML-форму, шукає всі книги про PHP. Сторінка обробки форми називається search_book.php.
  2. Web-сервер приймає запит на search_book.php, отримує цей файл і передає на обробку механізму PHP.
  3. PHP виконує з'єднання з MySQL-сервером та надсилає запит.
  4. Сервер приймає запит до бази даних, обробляє його та надсилає результат (список книг) назад механізму PHP.
  5. Механізм PHP завершує виконання сценарію, форматує результат запиту HTML. Після цього результат HTML повертається Web-серверу.
  6. Web-сервер пересилає HTML у браузер, і користувач має змогу переглянути список книг.

Використання механізму транзакцій

Використання механізму транзакція на прикладі як передати гроші від однієї людини іншій

If(mysql_query ("BEGIN") && mysql_query ("UPDATE money SET amt = amt - 6 WHERE name = "Eve"") && mysql_query ("UPDATE money SET amt = amt + 6 WHERE name = "Ida"") && mysql_y ("COMMIT"))( echo "Успішно"; )else( mysql_query ("ROLLBACK"); echo "Не успішно"; )

SELECT … FOR UPDATE

Якщо Ви запускаєте кілька процесів, які роблять select запит до однієї і тієї ж таблиці, то вони можуть вибрати один і той самий запис одночасно.

Щоб уникнути вищезгаданої ситуації, необхідно виконати не просто SELECT запит, а його розширену версію, про яку багато хто і не підозрює: SELECT … FOR UPDATE.

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

Однак не все так просто. Вам необхідно виконати ще кілька умов. По-перше, ваша таблиця має бути створена на основі архітектури InnoDB. В іншому випадку блокування просто не спрацьовуватиме. По-друге, перед виконанням вибірки необхідно вимкнути автокоміт запиту. Тобто. тобто автоматичне виконання запиту. Після того, як ви вкажете UPDATE запит, необхідно буде ще раз звернутися до бази та закомітити зміни за допомогою команди COMMIT:

Свою базу я назвав "phptest". Після натискання на кнопку "Створити" Вас автоматично має перекинути у створену Вами базу даних.

Створюємо таблицю у базі даних

У цій процедурі також нічого складного немає. Давайте створимо таблицю в якій ми зберігатимемо заголовок наших статей і безпосередньо сам текст:

Як Ви могли помітити кількість полів я поставив цифру 3, чому? Адже нам потрібно створити два поля, під заголовок та текст. Справа в тому, що у таблиці в базі даних має бути одне додаткове поле.Для чого? Це поле є почерговий ідентифікаційний номер (тобто ми ніби вважаємо наші рядки в таблиці) таким чином ми отримуємо у кожного рядка таблиці свій неповторний номер. Це знадобиться для пошуку потрібного рядка в базі даних. Поле це зазвичай називають id та виставляють йому AUTO_INCREMENT(Покажу нижче де він виставляється). AUTO_INCREMENT дозволяє надавати кожному сточки свій неповторний номер, тим самим Ви в таблиці бази даних не зустрінете запис з однаковим номером!

Після заповнення імені та кількості полів, тисне "ОК" потрапляємо на сторінку створення полів. Зізнаюся Вам я не особливо розумію, що роблю при створенні полів, але мені це не заважає з ними працювати. Заповнимо ось так:

І заповніть два потрібні нам поля:

Чому лише два? Тому що перше поле ID буде заповнюватися автоматично за рахунок AUTO_INCREMENT. Тиснемо "ОК". Тепер у вкладці "Огляд" можна побачити створений нами рядок у таблиці:

Що ж, ми навчилися створювати таблиці та рядки через панель phpmyadmin, це вже прогрес.

Настав час навчиться створювати видаляти та оновлювати рядки у створених таблицях за допомогою php. Для того, щоб Ви краще сприйняли те, що я Вам кажу, будемо писати невелику адмінську панель сайту, і походу справи я Вам розповім що та як.

Виведення записів із бази даних

Почнемо з цього, оскільки при створенні якогось проекту необхідно наочно бачити процес, а без висновку це дуже складно зробити (я працюватиму з файлом test.php, не дивуйтеся коли побачите посилання в коді на цей файл). Як виводитимемо? Ну для початку нам необхідно підключитися до бази даних, після циклу do while (Вивчаємо PHP - Цикли) ми витягнемо записи з бази даних. Приступимо

  • Підключення до бази даних

Як здійснюється підключення? Увага на синтаксис:

mysql_select_db (Назва БД, mysql_connect (Сервер, Ім'я користувача БД, пароль користувача БД));

Назва бази даних, сервер користувача та пароль створюється Вами або надається Вашим хостером. На прикладі локального сервера, ви створюєте деякі дані самостійно, або користуєтеся вже створеними. Ось як виглядатиме підключення до створеної мною бази даних:






//ПІДКЛЮЧЕННЯ ДО БАЗИ ДАНИХ (БД)

Сервер, користувач і пароль було створено за умовчанням (у разі можна сказати, що майже всі дані нам надає хостер). Зі своїх даних я лише вказав ім'я бази даних. До речі, це php код, і тому повинен перебувати в спеціальних дужках ()

  • Виведення даних

Нам необхідно вивести дані із таблиці page. Увага на синтаксис виведення:

$result = mysql_query("SELECT Що витягуємо FROM ім'я таблиці в БД");

Перший рядок дозволяє вказати, які колонки нам необхідно витягнути, і з якої бази даних.

Другий рядок поміщає все знайдене в змінну...

УВАГАє кілька моментів, які я б хотів пояснити. Давайте вирішимо кілька завдань:

  • Нам необхідно витягнути всі поля таблиці.

Як витягнути всі поля з таблиці? ось так:

$result = mysql_query("SELECT * FROM page");
$myrow = mysql_fetch_array($result);

Ви могли помітити, що я поставив зірочку (*) після SELECT. Зірочка означає, що мені потрібно витягти всі поля з таблиці

  • Нам необхідно витягнути лише одне поле з таблиці

Як витягнути лише поле text із таблиці? ось так:

$result = mysql_query("SELECT text FROM page");
$myrow = mysql_fetch_array($result);

Для того щоб витягнути не всі поля, а тільки деякі, необхідно після SELECT через ком перерахувати необхідні поля.

  • Нам необхідно витягнути поля не з усі таблиці, а лише з одного рядка

Як витягнути всі поля з першого рядка? Нам відомо що перший рядок має id рівну одиниці, скористаємося цими знаннями:

Після SELECT я через кому пояснив які поля необхідно витягти, після додав новий рядок WHERE (що означає "де") id дорівнює 1. Таким чином я витягую потрібні мені поля з рядка де id дорівнює одиниці

Ну що ж, розпочнемо створення висновку наших статей? Виводитимемо тільки заголовки, приступимо:


$myrow = mysql_fetch_array($result);

do
{
echo "".$myrow."
";
}

Що ми зробили? Ми витягли з таблиці два поля, id та title. Далі запустили цикл do while (Вивчаємо PHP - Цикли) і сформували посилання за допомогою даних, які вивели з БД. Дані зберігаються в змінній $myrow, ця змінна є масивом, ключами до масиву є імена наших полів у базі даних. Ось що вийшло:

Висновок заголовків є, тепер давайте організуємо виведення повних повідомлень при натисканні миші за посиланням із заголовком. Для того щоб це здійснити в одному файлі, додамо умови if()():

//ПІДКЛЮЧЕННЯ ДО БАЗИ ДАНИХ (БД)
$nameDB = "phptest";// Назва БД
$nameSERVER = "localhost"; // Сервер
$nameUSER = "root"; // Ім'я користувача БД
$passUSER = "";//Пароль користувача БД
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
//ПІДКЛЮЧЕННЯ ДО БАЗИ ДАНИХ (БД)

//ВИСНОВОК ЗАГОЛОВКІВ
if(!isset($_GET["id"]))
{
$result = mysql_query("SELECT id,title FROM page");
$myrow = mysql_fetch_array($result);

do
{
echo "".$myrow."
";
}
while ($ myrow = mysql_fetch_array ($ result));
}
//ВИСНОВОК ЗАГОЛОВКІВ

//ВИСНОВОК ПОВНОГО ТЕКСТА
if(isset($_GET["id"]))
{

$myrow = mysql_fetch_array($result);

echo $myrow;
}
//ВИСНОВОК ПОВНОГО ТЕКСТА
?>

Я додав дві умови. Список із заголовками ми будемо бачити тільки якщо не існує глобальна змінна $_GET["id"]. Повний текст ми побачимо тільки якщо ця змінна існує. При цьому з бази даних ми виводитимемо лише один потрібний нам запис. Ось що ми отримали:

Тепер думаю час навчиться додавати нові рядки в таблицю.

Додавання даних до БД

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

//ФОРМА ДОДАВАННЯ ЗАПИСІВ
if(isset($_GET["add"]))
{
echo "







";
}
//ФОРМА ДОДАВАННЯ ЗАПИСІВ

Ця форма з'явиться тільки якщо буде існувати глобальна змінна $_GET["add"], тому де-нитку в низу необхідно вставити посилання на додавання нової статті. Найкраще це зробити в коді виведення заголовків, так само можна відредагувати умову виведення наших заголовків ось так:

//ВИСНОВОК ЗАГОЛОВКІВ
if(!isset($_GET["id"]) AND !isset($_GET["add"]))
{
$result = mysql_query("SELECT id,title FROM page");
$myrow = mysql_fetch_array($result);

do
{
echo "".$myrow."
";
}
while ($ myrow = mysql_fetch_array ($ result));

echo "


Додати пост";
}
//ВИСНОВОК ЗАГОЛОВКІВ

Відредагував умову таким чином, щоб список заголовків не з'являвся при виведенні форми, ось що вийшло:

$result = mysql_query("INSERT INTO ім'я таблиці в БД (поле 1 БД,поле 2 БД) VALUES ("дані 1","дані 2")");

Зараз напишемо обробник для нашої міні адмінки і ви все зрозумієте. Ось шматочок коду, який я розмістив відразу після підключення до бази даних:

//ДОДАВЛЕННЯ ЗАПИСІВ

{

header("location: test.php");
exit;
}
//ДОДАВЛЕННЯ ЗАПИСІВ

Умовою є глобальна змінна $_POST тобто якщо ми заповнили форму, натиснули на кнопку "Додати пост", то спрацює наша умова. У полі title запишуться дані з глобальної змінної $_POST, а поле text - $_POST. Далі спрацює рядок header("location: test.php") Вона дозволяє перенаправити користувача на іншу сторінку, в даному випадку цією сторінкою буде test.php. А рядок exit; перериває виконання інших скриптів. Ось що вийшло:

Редагування даних у БД

Для того щоб редагувати певний запис в нашій БД нам природно необхідно визначити який саме запис необхідно відредагувати ... Я пропоную виводити кнопку редагування в коді виведення повного тексту, відредагуємо його:

//ВИСНОВОК ПОВНОГО ТЕКСТА
if(isset($_GET["id"]))
{
$result = mysql_query("SELECT text FROM page WHERE id="$_GET"");
$myrow = mysql_fetch_array($result);

echo $myrow;
echo "


Редагувати пост";
}
//ВИСНОВОК ПОВНОГО ТЕКСТА


if(isset($_GET["edd"])))
{

$myrow = mysql_fetch_array($result);

Echo "








";
}
//ФОРМА РЕДАГУВАННЯ ЗАПИСІВ

Я додав цей шматочок коду після форми додавання записів. Ця форма майже аналогічна формі додавання постів. Як Ви могли помітити, я переробив атрибути name і додав атрибут value. У цей атрибут я помістив дані, які вивів з бази даних. Також тут є невидиме поле. Воно потрібно для того, щоб переслати ідентифікатор запису у файл обробник.

Тепер для того, щоб при виведенні цієї форми на екрані не було списку заголовків, виправимо умову:

//ВИСНОВОК ЗАГОЛОВКІВ

{
$result = mysql_query("SELECT id,title FROM page");
$myrow = mysql_fetch_array($result);

do
{
echo "".$myrow."
";
}
while ($ myrow = mysql_fetch_array ($ result));

echo "


Додати пост";
}
//ВИСНОВОК ЗАГОЛОВКІВ

Настав час дізнатися, як редагуються записи в базі даних. Ось синтаксис:

Тепер напишемо обробник. Ось шматочок коду який я додав відразу після обробки додавання записів:

//РЕДАКТУВАННЯ ЗАПИСІВ

{

header("location: test.php");
exit;
}
//РЕДАКТУВАННЯ ЗАПИСІВ

За умовою видно, що обробник запуститься тільки якщо ми натиснули на кнопку "редагувати пост". Далі йде оновлення бази даних. У полі title ми помістимо значення глобальної змінної $_POST, а в полі text - $_POST. Редагувати будемо рядок у якого id дорівнює глобальній змінній $_POST. Після цього ми перенаправляємо користувача назад до списку заголовків:

Видалення записів із БД

Ну що ж, останнє, що залишилося нам вивчити, це видалення. Воно простіше всіх інших, так що увага на синтаксис:

Для того щоб видаляти якісь записи, необхідно де-нитку виставити посилання за допомогою якого користувач зможе видалити якийсь запис ... давайте розмістимо це посилання у виведенні повного тексту посту:

//ВИСНОВОК ПОВНОГО ТЕКСТА
if(isset($_GET["id"]))
{
$result = mysql_query("SELECT text FROM page WHERE id="$_GET"");
$myrow = mysql_fetch_array($result);

echo $myrow;
echo "


Редагувати пост";
echo "
Видалити піст";
}
//ВИСНОВОК ПОВНОГО ТЕКСТА

Результат праці

Ось повний код сьогоднішнього посту:

//ПІДКЛЮЧЕННЯ ДО БАЗИ ДАНИХ (БД)
$nameDB = "phptest";// Назва БД
$nameSERVER = "localhost"; // Сервер
$nameUSER = "root"; // Ім'я користувача БД
$passUSER = "";//Пароль користувача БД
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
//ПІДКЛЮЧЕННЯ ДО БАЗИ ДАНИХ (БД)

//ДОДАВЛЕННЯ ЗАПИСІВ
if(isset($_POST["title_post"]) AND isset($_POST["text_post"]))
{
$result = mysql_query("INSERT INTO page (title,text) VALUES ("$_POST","$_POST")");
header("location: test.php");
exit;
}
//ДОДАВЛЕННЯ ЗАПИСІВ

//РЕДАКТУВАННЯ ЗАПИСІВ
if(isset($_POST["title_post_edd"]) AND isset($_POST["text_post_edd"]))
{
$result = mysql_query ("UPDATE page SET title="$_POST", text="$_POST" WHERE id="$_POST"");!}
header("location: test.php");
exit;
}
//РЕДАКТУВАННЯ ЗАПИСІВ

//ВИДАЛЕННЯ ЗАПИСІВ
if(isset($_GET["del"]))
{
$result = mysql_query ("DELETE FROM page WHERE id="$_GET"");
header("location: test.php");
exit;
}
//ВИДАЛЕННЯ ЗАПИСІВ

//ВИСНОВОК ЗАГОЛОВКІВ
if(!isset($_GET["id"]) AND !isset($_GET["add"]) AND !isset($_GET["edd"]))
{
$result = mysql_query("SELECT id,title FROM page");
$myrow = mysql_fetch_array($result);

do
{
echo "".$myrow."
";
}
while ($ myrow = mysql_fetch_array ($ result));

echo "


Додати пост";
}
//ВИСНОВОК ЗАГОЛОВКІВ

//ВИСНОВОК ПОВНОГО ТЕКСТА
if(isset($_GET["id"]))
{
$result = mysql_query("SELECT text FROM page WHERE id="$_GET"");
$myrow = mysql_fetch_array($result);

echo $myrow;
echo "


Редагувати пост";
echo "
Видалити піст";
}
//ВИСНОВОК ПОВНОГО ТЕКСТА

//ФОРМА ДОДАВАННЯ ЗАПИСІВ
if(isset($_GET["add"]))
{
echo "







";
}
//ФОРМА ДОДАВАННЯ ЗАПИСІВ

//ФОРМА РЕДАГУВАННЯ ЗАПИСІВ
if(isset($_GET["edd"])))
{
$result = mysql_query("SELECT * FROM page WHERE id="$_GET"");
$myrow = mysql_fetch_array($result);

Echo "








";
}
//ФОРМА РЕДАГУВАННЯ ЗАПИСІВ
?>

Висновок

Досить складний вийшов матеріал. Але! Ви могли помітити, що я використовував лише ту інформацію, яку давав раніше. А це означає, що, маючи ці знання, можна створювати найпростіші проекти на php! Якщо Ви все це освоїли, то можете з гордістю заявити, що ви програміст-початківець! Ну що ж, тепер Ви цілком можете приступити до створення своєї першої cms. Якщо є якісь питання, а вони швидше за все є, ставте, допоможу чим зможу! Успіхів Вам, на сьогодні у мене все!

PS: Що таке mdf файл? Чим його відкрити? Як його відкрити? На ці та багато питань можна знайти відповідь на voprosi4ek.ru