Як зробити запис до бази даних MySQL, використовуючи PHP код. Особливо урок буде корисний новачкам Додавання даних у SQL через html форму

Головна / Додатковий функціонал

Від автора:ех, з пісні слів не викинеш! Але їх можна видалити, оновити чи вставити інші. Головне, щоб слова були внесені до бази даних. Сьогодні ми розповімо, як відбувається запис даних MySQL і як це зробити правильно, щоб пісня звучала!

Додавання записів за допомогою phpMyAdmin

В оболонці phpMyAdmin для адміністрування СУБД MySQL реалізовано «полегшений» функціонал додавання нових записів до таблиць бази даних. Через свою простоту він ідеально підходить як для зелених «чайників», так і для «ледачих» професіоналів.

Щоб занести нову інформацію до таблиці, слід зайти до програми під правами адміністратора. Потім у списках зліва вибрати потрібну базу та таблицю. Після цього у верхньому меню перейти через пункт «Вставити».

Після цього, щоб зробити запис в БД MySQL, заповнюємо в наступному вікні для всіх стовпців поля «Значення» і натискаємо внизу «Ок».

На наведеному вище скріншоті видно, що таблиця «Animals», що модифікується, складається з двох стовпців (полів): id і name. У другому розділі вказано тип кожного зі стовпців. Нам потрібно внести значення тільки для поля name, оскільки стовпець id є первинним ключем, і для нього під час створення таблиці встановлено автоінкремент. Це означає, що значення поля id буде генеруватися MySQL автоматично, додаючи до попереднього цілого числового значення 1.

Щоб дізнатися, яке поле записів даних MySQL є первинним ключем (primary key), в phpMyAdmin перейдіть меню (при обраній таблиці зліва в списку) на вкладку верхнього меню «Структура». Тут наводиться опис всіх полів таблиці, їх тип та додаткові характеристики.

Вставка даних за допомогою SQL-запитів

Але phpMyAdmin – це лише оболонка, а справжні адміністратори «спілкуються» з сервером MySQL за допомогою мови структурованих запитів. Тобто «розмовляють» із ним мовою SQL. Так як ми прагнемо стати справжніми професіоналами, то трохи «зануримося» у вивчення команд SQL у рамках теми, що розглядається. Ось запит, ввівши який у поле SQL, ви створите таку ж базу даних:

CREATE TABLE Animal (ID MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id));

CREATE TABLE Animal (ID MEDIUMINT NOT NULL AUTO_INCREMENT ,

name CHAR (30) NOT NULL, PRIMARY KEY (id));

Після створення таблиці та запису даних у базу MySQL (через вкладку «Вставити») програма повідомить вам, що в animals додано рядок зі значенням ідентифікатора 1. А трохи нижче у вікні редактора буде виведений код запиту, який за нас сформувала оболонка і надіслала серверу БД .

Код запиту:

INSERT INTO `my_db1`.`animal` (`id`, `name`) VALUES (NULL, "Cat");

INSERT INTO `my_db1`. `animal` (`id`, `name`) VALUES (NULL, "Cat");

Давайте докладніше вивчимо його. У SQL для вставлення нового рядка в таблицю використовується оператор INSERT. Він повідомляє серверу, що таблицю бази даних (my_db1 . animal) потрібно в поля id і name вставити зазначені значення (VALUES (NULL, ‘Cat’)).

Зверніть увагу, що стовпцю id ми вказуємо не числове значення, а NULL, оскільки для цього поля ми включили автозаповнення (автоінкремент).

Як вставити запис за допомогою PHP

Все розглянуте нами є лише «прелюдія» до основного дійства, в якому виходить на сцену його високість серверна мова програмування PHP. Саме завдяки йому MySQL як СУБД набула такого поширення в Мережі.
На зв'язці цих двох інтернет-технологій побудовано більшу частину всесвітнього павутиння. Куди не гляньте, скрізь ви знайдете їх: у сучасних CMS, «самописних» двигунах та на сервері.

Не дивно, що для запису даних MySQL PHP надає стільки вбудованих функцій. Але ми зупинимося на найголовніших із них. Ось код, який додає нове "тварина" в таблицю animals. Якщо сильно постаратися, то таким чином можна зібрати цілий звіринець:)

$con_str=mysql_connect("localhost", "root", "", "db1"); if(mysql_connect("localhost","root"))( echo "Hello!!"; ) mysql_select_db("db1",$con_str); $query_str="INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, "dog")"; mysql_query($query_str); mysql_close();

$ con_str = mysql_connect ("localhost", "root", "", "db1");

if (mysql_connect ("localhost", "root")) (

echo "Hello!!" ;

mysql_select_db ("db1", $con_str);

$query_str = "INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, "dog")";

mysql_query ($query_str);

mysql_close();

Цей код потрібно вставити у PHP-файл і розмістити його на стороні сервера.

За допомогою функції mysql_connect() ми коннектимося до сервера баз даних MySQL. Як аргументи функція приймає хост, ім'я користувача СУБД, пароль та назву бази, до якої потрібно підключитися. У нас вказано порожній пароль, оскільки ми використовуємо сервер, встановлений на локальній (клієнтській) машині.

Для демонстрації всіх прикладів запису в базу MySQL за допомогою PHP ми застосовували «джентельменський набір» від Денвера. До нього входить локальний сервер Apache, сервер MySQL, phpMyAdmin та ще кілька корисних засобів створення та тестування програмного коду.

Потім у логічному блоці if ми перевірили наявність з'єднання з сервером БД. Після чого функції mysql_select_db() ми позначили базу, до якої будемо коннектитися. За допомогою функції mysql_query() запустили виконання SQL-запит, записаний в змінну $query_str. І наприкінці закрили встановлене з'єднання (функція mysql_close()). Тепер, якщо ми заглянемо у свій звіринець (таблицю animal), то виявимо там нового «вихованця».

Для його запису в MySQL PHP "любовно" надав весь необхідний набір функцій. Головне, на чому "палюються" новачки при використанні SQL у програмному коді - це неправильне написання запитів, порушення синтаксису та чергування знаків для екранування (лапок).

Щоб уникнути появи на своїй голові зайвого «сивого» волосся, краще перевіряти правильність написання запиту за допомогою phpMyAdmin. Для цього розмістіть код SQL у редакторі програми та запустіть його на виконання. Якщо щось не так, то програма почне «лаятися», виведе повідомлення червоного кольору і вкаже місцезнаходження помилки.

Як бачите, за допомогою MySQL можна і свій звіринець зібрати, і правильно змінити слова будь-якої пісні. І для запису в базу MySQL PHP підходить ідеально, тому ми радимо вам завести «тісну» дружбу із цією «великою» мовою програмування!

У цьому посібнику ви познайомитеся з тим, як почати керувати базою даних із вашого PHPскрипт. Ви вивчите додавання запису до таблиці MySQL,використовуючи PHP код. Перед тим, як почати, ознайомтесь з нашими іншими посібниками, які розкривають основні кроки роботи з PHP та базами даних – підключення з PHP до бази даних MySQL (англ.).

Перед початком перевірте наявність наступного:

  • Доступ до вашої панелі керування хостингом

Крок 1 - Створення таблиці

Насамперед, нам потрібно створити таблицю для ваших даних. Це дуже проста процедура, яку ви можете зробити в phpMyAdminз вашої панелі керування хостингом. Ми вже описували процес створення бази даних MySQL у попередньому посібнику (англ.), тому ми пропустимо цей момент тут.

Після входу на сторінку phpMyAdmin ви побачите подібну картину:

Створимо таблицю з назвою Studentsдля нашої бази даних u266072517_name. Створити нову таблицю можна за кнопкою Create Table. Після цього ви побачите нову сторінку, де ви можете ввести всі необхідні дані для таблиці:

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

Наведемо тут кілька простих пояснень полів, які ми будемо використовувати:

  • Name- Це ім'я вашого поля. Буде відображено у верхній частині вашої таблиці.
  • Type– тут можна встановити тип поля. Наприклад, ми вибираємо varcharтому, що тут нам потрібно ввести рядок з ім'ям (у якому є букви, не цифри).
  • Length/Values– використовується для максимальної довжини запису в цьому полі.
  • Index– ми використовуємо індекс “Primary” для нашого поля “ID”. При створенні таблиці рекомендується мати одне поле ID. Вона використовується для індексації записів таблиці, коли налаштовуються взаємозв'язку між таблицями. Тут також можна відзначити "A_I", що означає Auto Increment. Ця установка автоматично збільшуватиме індекс (1,2,3,4…).

Натисніть Saveі вашу таблицю буде створено.

Крок 2 - Створення PHP коду та додавання запису до таблиці MySQL

Варіант 1 – Метод MySQLi

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

" . mysqli_error($conn); ) mysqli_close($conn); ?>

Таким чином перша частина коду (рядки 3 – 18 ) відносяться до частини встановлення з'єднання до бази даних. Ми не будемо знову проходити по цій частині, якщо ви хочете знати, що означає кожен рядок, зверніться до нашого попереднього керівництва, як підключитися до бази даних (англ.).

Почнемо з рядка 19 :

$sql = "INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")";

Це найважливіший рядок коду, він робить усе, що ми описуємо у цьому посібнику – додавання запису в таблицю MySQL до бази даних. INSERT INTO– це вираз, який додає запис у таблицю бази даних MySQL. У нашому прикладі ми додаємо дані до таблиці Students.

Рухаючись далі, у дужках, ми визначаємо поля таблиці, значення яких будемо додавати: (name, lastname, email). Дані будуть додані у визначеному порядку. Якщо ми напишемо (email, lastname, name)значення будуть додані в іншому порядку.

Наступна частина значення VALUES. Тут ми задаємо наші значення раніше вказані поля. Таким чином, кожне поле набуде свого значення. Наприклад, у нашому випадку це буде щось на зразок: name = Thom, lastname = Vial, email = [email protected] .

Що важливо відзначити, що тут ми формуємо запит SQL, використовуючи PHP код. SQL запити повинні бути укладені в лапки. У нашому прикладі, все між лапками і після $sql = це SQL запит.

Наступна частина коду ( 20 – 22 рядки) запускає наш запит і здійснює перевірку успішності виконання запиту:

If (mysqli_query($conn, $sql)) ( echo "New record created successfully"; )

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

І заключна частина ( 22 – 24 рядки) показують інше повідомлення, у разі невдалого виконання нашого запиту:

Else ( echo "Error: " . $sql . "
" . mysqli_error($conn); )

Цей код відображає нам повідомлення про помилку, якщо щось пішло не так.

Варіант 2 – Метод об'єктів даних PHP (P HP D ata O bject)

Як і в попередньому прикладі, нам потрібно насамперед виконати підключення до бази даних, яке здійснюється під час створення нового об'єкта PDO – попередній посібник розповідає про те, як це відбувається. Оскільки підключення до бази даних MySQL – це PDO об'єкт, ми повинні використовувати різні PDO 'методи' (свого роду функції, які є частиною певного об'єкта) для підготовки та запуску запиту. Методи об'єктів викликаються таким чином:

$the_Object->the_Method();

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

// User writes this in username field of login for thom"; DROP DATABASE user_table; // The final query becomes this "SELECT * FROM user_table WHERE username = thom"; DROP DATABASE user_table;

Оскільки SQL код синтаксично правильний, точка з комою робить з DROP DATABASE user_tableновий запит SQL, і вашу таблицю користувачів видалено. Вирази, що готуються, не дозволяють символи і ; для завершення вихідного запиту, та інструкція DROP DATABASEніколи не виконається.

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

Для використання висловів, що готуються, потрібно створити нову змінну, яка викличе метод prepare()об'єкт бази даних.

У правильному вигляді код виглядає:

$servername = "mysql.hostinger.com"; $database = "u266072517_name"; $username = "u266072517_user"; $password = "buystuffpwd"; $sql = "mysql:host=$servername;dbname=$database;"; $dsn_Options = ; // Create a new connection to the MySQL database using PDO, $my_Db_Connection is object try ( $my_Db_Connection = новий PDO($sql, $username, $password, $dsn_Options); echo "Connected successfully"; ) catch (PDOException $ error) ( echo "Connection error: " . $error->getMessage(); ) // Налаштувати параметри для людини, щоб отримати до 데이터베이스 $first_Name = "Thom"; $last_Name = "Vial"; $email = " [email protected]"// Тут ми створили варіацію, що телефонує preparation() метод з Database об'єкт // SQL SQL виконає, що ви збираєтеся встановлювати як параметр, і placeholders є вірним як цей:placeholder_name $my_Insert_Statement = $my_Db_Connection-> prepare("INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)"); // Now we tell the script which variable each placeholder actually refers to using the bindParam() method // First Parameter is placeholder in statement above - second parameter is variable that it should refer to $my_Insert_Statement->bindParam(:first_name, $first_Name); bindParam(:email, $email); $my_Insert_Statement->execute()) ( echo "New record created successfully"; ) el se (echo "Unable to create record"; ) // У цьому пункті ви можете змінити дані про variables і execute до більшого data to database $first_Name = "John"; $last_Name = "Smith"; $email = " [email protected]$my_Insert_Statement->execute(); // Execute again now that the variables have changed if ($my_Insert_Statement->execute()) ( echo "New record created successfully"; ) else ( echo "Unable to create record"; )

У рядках 28, 29 та 30 ми використовуємо метод bindParam()об'єкт бази даних. Є так само метод bindValue(), що відрізняється від попереднього.

  • bindParam() –цей метод підраховує дані, коли метод execute()досягнуто. Перший раз, коли скрипт доходить до методу execute()він бачить, що $first_Nameпосилається на “Thom”, пов'язує це значення та виконує запит. Коли скрипт добирається вдруге до методу execute(), він дивиться, що $first_Nameтепер посилається на "John", пов'язує це значення і запускає запит знову з новим значенням. Важливо розуміти, що ми створюємо запит один раз і підставляємо різні дані в різних місцях скрипта.
  • bindValue() –цей метод обчислює дані, щойно до нього доходить черга. Оскільки значення $first_Nameбуло задано як “Thom”, на момент, коли ми досягли методу bindValue(), воно буде використано при виклику методу execute()для $my_Insert_Statement.

Зверніть увагу, що ми повторно використовуємо змінну $first_Nameі задаємо їй нове значення вдруге. Якщо ви перевірите свою базу даних після запуску цього скрипту, там будуть обидва із заданих імені, всупереч цьому значення змінної $first_Nameбуде одно "John" наприкінці цього скрипту. Пам'ятайте, що PHP оцінює вміст сценарію перед його запуском.

Якщо ви зміните свій скрипт замінивши bindParamна bindValue, ви додасте до бази MySQL “Thom Vial” двічі до бази даних і John Smith буде проігноровано.

Крок 3 - Перевірка успішності виконання та вирішення спільних питань

Якщо запит, який ми запустили в базі даних MySQL, виконався успішно, ми побачимо таке повідомлення:

Вирішення поширених помилок

MySQLi

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

Як бачимо, перша частина коду гаразд, підключення було успішно встановлено, але запит SQL під час зіткнувся з невдачею.

"Error: INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", " [email protected]") Ви маєте небезпеку в вашій SQL syntaxі; виконайте автоматичне, що відповідає вашій MySQL версії сервера для правої syntax для використання поблизу "(name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")" at line 1"

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

$sql = "INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")";

Як ви бачите, ми використовуємо фігурні дужки замість круглих. Це не так і призводить до синтаксичної помилки в нашому скрипті.

PDO

У рядку 7 підключення PDO режим обробки помилок встановлено в 'display all exceptions' (відображати всі винятки). Якщо ви приберете це зі скрипту і запит зазнає невдачі, ви не отримаєте жодного повідомлення про помилку. З увімкненими винятками, будуть відображатися конкретні проблеми. В основному, це краще використовувати, коли розробляєте скрипт, так як це може виявити імена баз даних та таблиць, які ви б хотіли сховати від будь-кого, хто може отримати несанкціонований доступ до ваших даних. У разі вище, коли фігурні дужки використовували замість круглих, помилка виглядає, як показано нижче:

Випадковий error: Неможливий висновок "PDOException" with message "SQLSTATE: Syntax error або access violation: 1064 Ви маєте error in your SQL syntax; check the manual that corresponds to your MySQL server version for right syntax to used near "(name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")" at line 1"

Інші проблеми, з якими ви можете зіткнутися:

  • Невірно вказані поля (неіснуючі поля чи помилки написання назв).
  • Невідповідність типу значення типу поля. Наприклад, коли ми хочемо присвоїти значення числа 47 полю Name, ми отримаємо помилку, тому що передбачається, що значення буде рядком. Але, якщо ви вкажете число в лапках, наприклад, “47” , помилки не буде, тому що наше число буде записано як рядок у цьому полі.
  • Спроба ввести дані в таблицю, якої немає або помилка в написанні назви таблиці.

Всі ці помилки можуть бути виправлені дотримуючись посібників з виправлення помилок або перевіряючи журнал помилок (англ.).

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

Висновок

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

У цій статті ми розглянемо, як використовувати PHP для вставлення рядків у базу MySQL.

Крок 1 - Створення таблиці

Спочатку необхідно створити таблицю для даних. Це проста процедура, яку можна виконати за допомогою phpMyAdmin у панелі керування хостингом.

Після входу ви phpMyAdmin ви побачите такий інтерфейс:
Створимо в базі даних таблицю з ім'ям Students, натиснувши кнопку «Створити таблицю». Після цього ми побачите нову сторінку, на якій задаємо всі необхідні параметри таблиці:

Це найпростіше налаштування, яке можна використовувати для таблиці та отримання додаткової інформації про структуру таблиць/баз даних.

Параметри стовпців:

  • Name – це ім'я стовпця, яке відображається у верхній частині таблиці.
  • Type – тип стовпця. Наприклад, ми вибрали varchar, тому що будемо вводити рядкові значення.
  • Length/Values ​​— використовується для визначення максимальної довжини, яку може мати запис у цьому стовпці.
  • Index ми використовували «Первинний» індекс для поля «ID». При створенні таблиці рекомендується застосовувати як первинний ключ тільки один стовпець. Він використовується для переліку записів у таблиці і потрібен для налаштування таблиці. Я також наголосив на «A_I», що означає «Auto Increment» — параметр автоматичного присвоєння номера записів (1,2,3,4…).
    Натисніть кнопку "Зберегти", і таблиця буде створена.

Крок 2. Написання PHP-коду для вставки даних MySQL.

Варіант 1 - метод MySQLi

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

" . mysqli_error($conn); ) mysqli_close($conn); ?>

Перша частина коду (3-18 рядок) призначена для підключення до бази даних.

Почнемо з рядка № 19:

$sql = "INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")";

Вона вставляє дані до бази MySQL. INSERT INTO — це оператор, який додає дані до зазначеної таблиці. У прикладі дані додаються в таблицю Students.

Далі йде перерахування стовпців, в які вставляють значення: name, lastname, email. Дані будуть додані у вказаному порядку. Якби ми написали (email, lastname, name), значення були б додані в іншому порядку.

Наступна частина – це оператор VALUES. Тут ми вказуємо значення для стовпців: name = Thom, lastname = Vial, email = [email protected]

Ми запустили запит за допомогою PHP-коду. У програмному коді SQL-запити мають бути екрановані лапками. Наступна частина коду (20-22 рядок) перевіряє, чи був наш запит успішним:

if (mysqli_query($conn, $sql)) ( echo "New recordcreatedsuccessfully"; )

Цей код відображає повідомлення про успішне виконання запиту.

І остання частина (22 - 24 рядок) відображає повідомлення, якщо запит не був успішним:

else ( echo "Error: " . $sql . "
" . mysqli_error($conn); )

Варіант 2 - метод об'єкта даних PHP (PDO)

Спочатку потрібно підключитися до бази даних шляхом створення нового об'єкта PDO. Працюючи з ним використовуватимемо різні методи PDO. Методи об'єктів викликаються так:

$the_Object->the_Method();

PDO дозволяє підготувати SQL-код до його виконання. SQL-запит оцінюється та «виправляється» перед запуском. Наприклад, найпростіша атака з використанням ін'єкції SQL може бути виконана через просте введення SQL-коду в поле форми. Наприклад:

Так як це синтаксично правильний SQL-код, точка з комою робить DROP DATABASE user_table новим SQL-запитом, і таблиця користувача видаляється. Підготовлені вирази (пов'язані змінні) не дозволяють, щоб крапка з комою та лапки завершували вихідний запит. Тому команда DROP DATABASE ніколи не буде виконана.

Щоб використати підготовлені вирази, потрібно написати нову змінну, яка викликає метод prepare() об'єкта бази даних.

Коректний код:

getMessage(); ) // Встановлюємо змінні для персони, яку ми хочемо додати до бази даних $first_Name = "Thom"; $last_Name = "Vial"; $email = " [email protected]// Створюємо змінну, яка викликає метод об'єкта бази даних prepare() // Запит SQL, який ви хочете виконати, вводиться як параметр, а заповнювачі пишуться наступним чином: placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare("INSERT INTO Students ( name, lastname, email) VALUES (:first_name, :last_name, :email)"); // Тепер ми вказуємо скрипту, яка змінна посилається на кожен заповнювач, щоб використовувати метод bindParam() // Перший параметр - це заповнювач в операторі вище , другий - це змінна, яку він повинен посилатися $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); // Виконуємо запит, використовуючи дані, які щойно визначили // Метод execute() повертає TRUE, якщо він виконаний успішно, і FALSE, якщо ні, надаючи можливість вивести власне повідомлення if ($my_Insert_Statement->execute()) ( echo "New reco rdcreatedsuccessfully"; ) else ( echo "Unable to createrecord"; ) // У цій точці можна змінити дані змінних і виконати запит, щоб додати інші дані в базу data to the database $first_Name = "John"; $last_Name = "Smith"; $email = " [email protected]$my_Insert_Statement->execute(); // Виконуємо знову, коли змінна змінена if ($my_Insert_Statement->execute()) ( echo "New recordcreatedsuccessfully"; ) else ( echo "Unable to createrecord";

У рядках 28, 29 та 30 ми використовуємо метод bindParam() об'єкта бази даних. Також існує метод bindValue(), який дуже відрізняється від попереднього.

  • bindParam() - цей метод оцінює дані при досягненні методу execute(). Вперше, коли скрипт досягає методу execute(), він бачить, що $first_Name відповідає Thom. Потім зв'язує це значення та запускає запит. Коли скрипт досягає другого методу execute(), він бачить, що $first_Name тепер відповідає "John". Після цього зв'язує це значення і знову запускає запит із новими значеннями. Важливо пам'ятати, що ми визначили запит і повторно використовуємо його з різними даними в різних точках скрипта.
  • bindValue() — цей метод оцінює дані, щойно досягається bindValue(). Оскільки для $first_Name було встановлено значення Thom, при досягненні bindValue(), воно буде використовуватися щоразу, коли викликається метод execute() для $my_Insert_Statement.
    Зверніть увагу, що ми повторно використовуємо змінну $first_Name і привласнюємо їй нове значення вдруге. Після запуску скрипта в БД будуть вказані обидва імені, незважаючи на те, що змінна $first_Name в кінці скрипта має значення "John". Пам'ятайте, що PHP перевіряє весь скрипт, перш ніж запустити його.

Якщо ви оновите скрипт, щоб замінити bindParam на bindValue, ви двічі вставите в базу даних Thom Vial, а John Smith буде проігнорований.

Крок 3 — підтвердження успішного виконання та вирішення проблем

Якщо запит на вставку рядків у базу був успішним, ми побачимо таке повідомлення:

Усунення поширених помилок

MySQLi

У будь-якому іншому випадку буде відображено повідомлення про помилку. Наприклад, давайте зробимо в коді одну синтаксичну помилку, і ми отримаємо таке:

Перша частина коду в порядку, з'єднання успішно встановлено, але SQL-запит не пройшов.

"Error: INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", " [email protected]") Ви маєте небезпеку в вашій SQL syntaxі; виконайте автоматичнийвідповідь до вашої MySQL серверної версії для правоїсинтакти для використання поблизу "(name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")" at line 1"

Було допущено синтаксичну помилку, яка викликала збій скрипту. Помилка була тут:

$sql = "INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")";

Ми використовували фігурні дужки замість звичайних. Це не так, і скрипт видав синтаксичну помилку.

PDO

У рядку 7 з'єднання PDO для режиму помилок встановлено "display all exceptions". Якщо встановлено інше значення, і запит не вдався б, ми не отримали б жодних повідомлень про помилки.

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

Недостатній error: Неправильнийвідповідь "PDOException" з повідомленням "SQLSTATE: Syntax error або accessviolation: 1064 Ви маєте error in your SQL syntax; виконати автоматичнийвідповідь до вашої MySQL версії сервера для правогосинтакту для використання в найближчому майбутньому "(name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")" at line 1"

Інші можливі проблеми:

  • Невірно вказані стовпці (неіснуючі стовпці чи орфографічна помилка у тому іменах).
  • Один тип значення присвоюється стовпцю іншого типу. Наприклад, якщо спробувати вставити число 47 в стовпець Name, то матимемо помилку. У цьому стовпці потрібно використовувати рядкове значення. Але якби ми вказали число в лапках (наприклад, «47»), то спрацювало б, бо це рядок.
  • Спроба ввести дані до таблиці, яка не існує. Допущена орфографічна помилка у імені таблиці.

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

Висновок

У цій статті ми розповіли, як використовувати PHP для вставлення даних у базу даних MySQL, використовуючи MySQLi та PDO. А також про те, як усувати найпоширеніші помилки. Ці знання будуть корисні при вивченні програмування та розробки власного сайту.

Дана публікація є перекладом статті « How to Use PHP to Insert Data Into MySQL Database» , підготовленою дружною командою проекту

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

Ваше ім'я:
Ваш e-mail:


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

$name = $_POST["name"]; $email = $_POST["email"]; $result = mysqli_query("INSERT INTO user (name, email) VALUES ("$name", "$email")"); if ($result) ( echo "Дані успішно збережені!"; ) else ( echo "Відбулася помилка, будь ласка, повторіть спробу."; )


Що ж у цьому скрипті відбувається? Зараз розберемося!
Введені у форму дані методом POST переходять у php скрипт (який написаний вище), і за допомогою глобального масиву $_POST дані формуються в змінні $name і $email:

$name = $_POST["name"]; $email = $_POST["email"];


Після того, як змінні готові для занесення до бази, складаємо запит. Але перш ніж ваші скрипти повинні бути вже підключені до БД, як підключитися до БД, я писав у цій темі: .Сам запит має такий вигляд:

$result = mysqli_query("INSERT INTO user (name, email) VALUES ("$name", "$email")");


У цьому коді ми позначили, що до осередків name і email , які у таблиці user , будуть додані такі змінні: $name і $email .
Далі, якщо все пройшло успішно, ми отримаємо повідомлення з умови:

Дані успішно збережено!


Якщо ж виникли якісь проблеми та дані не були занесені, ми отримаємо повідомлення про помилку:

Відбулася помилка, будь ласка, повторіть спробу.


От і все!

*** *** *** *** ***

При бажанні можна додати більше полів для введення інформації, наприклад, нам необхідно додати поле для введення міста користувача. У нас вже є готовий скрипт (написаний вище), тепер просто додамо поле Ваше місто, змінну назвемо: $ city . І так у форму введення даних, після:

Ваш e-mail:


додаємо:

Ваше місто:


У php скрипті, після:

$email = $_POST["email"];


додаємо:

$city = $_POST["city"];


Ну і звичайно у запиті додаємо теж, ось так:

$result = mysqli_query("INSERT INTO user (name, email, city) VALUES ("$name", "$email", "$city")");


Ось що має вийде в результаті:
Форма введення:

Ваше ім'я:
Ваш e-mail:
Ваше місто:


Скрипт:

$name = $_POST["name"]; $email = $_POST["email"]; $city = $_POST["city"]; $result = mysqli_query("INSERT INTO user (name, email, city) VALUES ("$name", "$email", "$city")"); if ($result == true) ( ​​echo "Дані успішно збережені!"; ) else ( echo "Відбулася помилка, будь ласка повторіть спробу."; )


Як бачите нічого складного! При необхідності можна додати ще поле, і ще, і ще...

Останнє оновлення: 1.11.2015

Для додавання даних використовується вираз "INSERT":

$query ="INSERT INTO tovars VALUES(NULL, "Samsung Galaxy III","Samsumg")";

Вираз "INSERT" вставляє до таблиці один рядок. Після ключового слова INTO вказується назва таблиці, а після VALUES у дужках вказуються набір значень всіх стовпців. Так як у нас у таблиці три стовпці, ми вказуємо три значення.

Так як у минулій темі при створенні таблиці ми вказували наступну черговість стовпців: id, name, company, то в даному випадку для стовпця id передається значення NULL, для name – "Samsung Galaxy III", а для company – "Samsumg".

Оскільки стовпець id визначений як AUTO_INCREMENT, то нам необов'язково вказувати йому певне числове значення, і можна передати значення NULL, а MySQL присвоє стовпцю таке доступне значення.

Тепер розглянемо додавання даних з прикладу. Створимо файл create.phpз наступним вмістом:

Дані додані"; ) // закриваємо підключення mysqli_close($link); ) ?>

Додати нову модель

Введіть модель:

Виробник:

Тут код взаємодії з базою даних поєднаний з функціональністю форм: за допомогою форми ми вводимо дані для додавання до бд.

Безпека та MySQL

Ми використовували функцію mysqli_real_escape_string() . Вона служить для екранізації символів у рядку, який потім використовується у запиті SQL. Як параметри вона приймає об'єкт підключення та рядок, який треба екранувати.

Таким чином, ми застосовуємо екранізацію символів фактично двічі: спочатку для sql-виразу за допомогою функції mysqli_real_escape_string(), а потім для html за допомогою функції htmlentities(). Це дозволить нам захиститися відразу від двох видів атак: XSS-атак та SQL-ін'єкцій.

© 2023 androidas.ru - Все про Android