Як записати дані MySQL з використанням PHP

Привіт шановний відвідувач!

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

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

Таким чином, ми перевіримо за допомогою PHP запис як одиночного рядка, так і відразу кількох за один раз виконання скрипта.

А на завершення перетворимо отриманий PHP-скрипт, виділивши з нього фрагмент запиту до бази даних в окрему функцію.

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

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

  • Записуємо дані одного рядка у таблицю MySQL
  • Складаємо PHP-скрипт для запису всіх рядків таблиці
  • Складаємо окрему функцію запису даних до таблиці 'url_php'
  • Вихідні файли сайту

Записуємо дані одного рядка в таблицю MySQL

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

id (№ пп)title (Заголовок сторінки)file (ім'я файлу)url (ЧПУ)
1Головнаindex.php(див. примітку *)
2Статистика угонівarticle.phpstatistika-ugonov
3Способи маркуванняaction.phpsposobi-markirovki
4Отримати знижкуrighting.phppoluchity-skidku
5Контактиcontacts.phpkontakti

* - url головної сторінки зазвичай має вигляд доменного імені без додавання будь-яких символів. У нашому випадку – це "avtobezugona.ru".

Виходячи з цього, кількість параметрів для кожного запису повинна відповідати трьом полям таблиці, а саме: "title", "file" і "url" (ідентифікатор "id" при створенні записів присвоюється автоматично).

Для написання відповідного PHP-коду будемо використовувати функцію виконання запиту до бази данихqueryпокращеного модуля MySQLi PHP, в якій одним із параметрів буде текст запиту у вигляді рядка на мові SQL.

При цьому як параметри самого SQL-запиту будуть використовуватися три вищеперелічені поля вихідної таблиці даних.

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

Нижче наведено відповідний PHP-код, при виконанні якого будуть записуватися дані із зазначенимипараметрами у наступний по порядку рядок.

Раніше, при розгляді PHP-коду як приклади наводилися варіанти процедурного та об'єктно-орієнтованого стилів написання функцій модуля MySQLi. У подальших розглядах використовуватиметься лише об'єктно-орієнтований стиль.

Виходячи з того, що ці два варіанти відрізняються лише несуттєвою відмінністю в написанні функцій (у процедурному використовуються звична форма функції PHP, в об'єктно-орієнтованому - мовні конструкції звернень до методів та властивостей об'єктів), то тим, хто звик працювати з процедурним стилем, при бажанні нескладно зробити відповідні зміни.

//----Запис одного рядка до таблиці "url_php"-------------

if( !$mysqli -> query ( "INSERT INTO `url_php` (`title`, `file`, `url`) VALUES (`$title', '$file', '$url ')" ))

die('Запис не виконано: Код помилки: ' .$mysqli->errno. ' - ' .$mysqli->error );

echo'Запис даних до таблиці "url_php" виконано успішно' ;

Як видно, змінним $title , $file і $url (поз. 3÷5) надано значення першого рядка вихідної таблиці (для змінної $url заданий порожній рядок двома одиночними лапками).

Для виконання запиту до бази даних тут використовується об'єктно-орієнтований стиль, де ідентифікатором з'єднання $mysqli як об'єкт викликається методqueryіз SQL-запитом (поз.6).

Слід зазначити, що тут SQL-запит складений за аналогією з аналізованим у попередній статті. Тільки тепер у ролі значень у ньому використовуються не конкретні дані, а задані змінні $title , $file і $url , які стосуються одному рядку.

І останнє, що варто відзначити за представленим PHP-кодом, це наявність перевірки результатіввиконання запиту.

Так, у випадку, якщо з яких-небудь причин запит не буде виконано, функція 20 (поз.7) зупинить роботу програми з виведенням повідомлення на екран браузера. При цьому буде відображено код і текст помилки, отримані за допомогою властивостей errno та error відповідно.

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

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

Тепер, розмістимо цей код у файл "index.php" на головній сторінці сайту "newsite.local" і перевіримо запис першого рядка в таблицю "url_php". Для цього достатньо буде поновити головну сторінку.

даних

Як видно, угорі сторінки після завантаження з'явилося повідомлення про успішне виконання запису.

дані

Також можна перевірити контроль за виконанням сформованого запиту. Для цього введемо в його код деяку помилку, скажімо до імені першого поля "title" додамо цифру 7, як показано на наступному малюнку.

//----Запис одного рядка до таблиці "url_php"-------------

if( !$mysqli -> query ( "INSERT INTO `url_php` (`title7`, `file`, `url`)) VALUES ('$title', ' $file', '$url')" ))

die('Запис не виконано: Код помилки: ' .$mysqli->errno. ' - ' .$mysqli->error );

echo'Запис даних до таблиці "url_php" виконано успішно' ;

І якщо тепер знову оновити головну сторінку, то завантаження її буде зупинено, а на екрані браузера з'явиться інформаційне повідомлення з кодом помилки і з її описом. В даному випадку виявлено невідоме поле з ім'ям "title7" (якраз те, в яке ми свідомо внесли помилку).

записати

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

Таким чином, ми перевірили з використанням PHP запис одного рядка в таблицю MySQL.

Складаємо PHP-скрипт для запису всіх рядків таблиці

Для заповнення рядків, що залишилися, нам необхідно скласти такий код, при виконанні якого відбувалося б почергове виконання запиту на запис рядка, але не з постійними значеннями змінних $title , $file і $url , а змінюваними відповідно до вихідних даних.

Таке завдання буде нескладно вирішити, якщо використовувати як змінні масиви зі значеннями по кожному рядку і конструкцію циклуforдля виконання повторних запитів до бази даних.

Нижче показаний такий варіант вирішення поставленого завдання.

//----Запис кількох рядків у таблицю "url_php"-------------

$title_array =array( 'Головна', 'Статистика угонів', 'Способи маркування', 'Отримати знижку', 'Контакти' );

$file_array =array( 'index.php', 'article.php', 'action.php', 'righting.php', 'contacts.php' );

$url_array =array( '', 'statistika-ugonov', 'sposobi-markirovki', 'poluchity-skidku', 'kontakti' );

if( !$mysqli -> query ( "INSERT INTO `url_php` (`title`, `file`, `url`) VALUES (`$title','$file', '$url')" ))

die('Запис не виконано: Код помилки: ' .$mysqli->errno. ' - ' .$mysqli->error );

echo'Запис даних до таблиці "url_php" виконано успішно' ;

Тут для призначення змінних використовуються числові масиви (поз. 3÷5), в яких кожен елемент має числовий індекс.

А з допомогою конструкції циклуfor, залежно від індексу, змінним $title , $file , $url надаються необхідні значення (поз. 7÷9).

При цьому в тіло циклу включений також і виклик методуquery(поз.10) з SQL-запитом, що забезпечить виконання запису даних у рядок з отриманими значеннями змінних при кожному виконанні циклуfor.

Як відомо, цей оператор повторює певні дії (інструкції), доки не буде виконано задану умову. У цьому випадку цикли почнуть виконуватися зі значенням змінної $i , рівної одиниці і закінчаться, коли вона прийме значення більше чотирьох.

Враховуючи, що за умовчанням числові масиви починаються з індексу "0", то при виконанні даного скрипту буде почергово відбуватися запис всіх вихідних даних, починаючи з другого рядка. Значення першого рядка не будуть записані, оскільки індекс "0" у цикліforбуде пропущений.

Як видно, отриманий код виявився досить простим, лише кілька рядків.

Тепер перевіримо його роботу, знову оновивши головну сторінку.

дані

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

Складаємо окрему функцію запису даних у таблицю 'url_php'

У попередніх прикладах ми виконували запит у PHP-коді, безпосередньо розміщеному в основній програмі.

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

Ось зараз ми і зробимо такі перетворення з раніше отриманим PHP-скриптом.

Для цього фрагмент коду із запитом до бази данихqueryвинесемо в окремий файл "functions.php", який був створений раніше в статті Підключаємо базу даних MySQL з використанням процедурного та об'єктно-орієнтованого стилю MySQLi. І на його основі створимо окрему функцію запису рядка в таблицю "url_php" під назвою "rihgtUrlPhp".

Отриманий в результаті цього код функціїrihgtUrlPhp()набуде наступного вигляду.

//----Функція запису рядка в таблицю "url_php"-------------

functionrihgtUrlPhp ($title, $file, $url)

if( !$mysqli -> query ( "INSERT INTO `url_php` (`title`, `file`, `url`) VALUES (`$title', '$file', '$url ')" ))

die('Запис не виконано: Код помилки: ' .$mysqli->errno. ' - ' .$mysqli->error );

Тут необхідно відзначити, що змінні $title, $file і $url тепер є параметрами новоствореної функції rihgtUrlPhp() (поз.3).

Крім того, для того, щоб як змінна $mysqli використовувалася саме змінна ідентифікатора з'єднання, тут вона позначена як глобальна (поз.4).

Що стосується оператораfor, його початковий індекс замінений з 1 на 0. Це зроблено для того, щоб при виконанні скрипту відбувався запис усіх рядків, включаючи перший.

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

І останнє, що залишилося зробити, це замість віддаленого запиту до бази даних, додати до нього виклик до новоствореної функції.

Таким чином, код PHP-скрипту деяким чином зміниться (світлим кольором виділено рядки із змінами).

//----Запис кількох рядків у таблицю "url_php" через виділену функцію-------------

$title_array =array( 'Головна', 'Статистика угонів', 'Способи маркування', 'Отримати знижку', 'Контакти' );

$file_array =array( 'index.php', 'article.php', 'action.php', 'righting.php', 'contacts.php' );

$url_array =array( '', 'statistika-ugonov', 'sposobi-markirovki', 'poluchity-skidku', 'kontakti' );