Додавання до бд php. Як зробити запис до бази даних MySQL, використовуючи PHP код

У цьому уроці ми розглянемо, як вставляти дані в БД безпосередньо з ваших РНР-скриптів.

Вставка даних із використанням SQL

Ви використовуєте SQL для вставки даних у БД так само, як використовуєте SQL для створення БД та таблиць. Синтаксис SQL-запиту такий:

INSERT INTO Ім'яТаблиці (стовпець1, стовпець 2, ...) VALUES(значення1,значення 2, ...)

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

Приклад: Вставка нової персони до таблиці

У цьому прикладі ми використовуємо БД з Уроку 18 . Скажімо, ми хочемо вставити персону у БД. Це може бути Gus Gooseз номером телефону 99887766 та датою народження 1964-04-20 .

Оператор SQL може виглядати так:

$strSQL = "INSERT INTO people(FirstName,LastName,Phone,BirthDate) VALUES("Gus","Goose","99887766 ","1964-04-20")";

Як бачите, SQL-оператори можуть бути дуже довгими і можна легко втратити слід. Тому краще записувати SQL-оператор трохи інакше:

strSQL = "INSERT INTO people("; strSQL = strSQL. "FirstName,"; strSQL = strSQL. "LastName," strSQL = strSQL. "Phone,"; strSQL = strSQL. "birth)"; strSQL = strSQL. "VALUES ("; strSQL = strSQL . ""Gus", "; strSQL = strSQL. ""Goose", "; strSQL = strSQL. "99887766", ";

strSQL = strSQL. "1964-04-20"); mysql_query($strSQL) або die(mysql_error());.

Тут SQL-оператор будується з розподілом пропозиції на невеликі частини з наступним об'єднанням їх у змінну

$strSQL

На практиці немає різниці у застосуванні того чи іншого методу, але при роботі з великими таблицями стає вкрай важливою можливість "тримати слід", тому вибирайте найбільш підходящий метод. Спробуємо виконати наступний код для вставки Gus Goose у БД: Вставка даних у БД// З'єднання з сервером БД mysql_connect("mysql.myhost.com", "user", "sesame") або die (mysql_error()); // Вибір БД mysql_select_db("mydatabase") or die(mysql_error()); // Побудова SQL-оператора $strSQL = "INSERT INTO people("; $strSQL = $strSQL. "FirstName,"; $strSQL = $strSQL. "LastName,"; $strSQL = $strSQL. "Phone,"; $strSQL = $strSQL. "BirthDate)"; $strSQL = $strSQL. ""Goose", "; $strSQL = $strSQL. "99887766", "; $strSQL = $strSQL. "1964-04-20"); // SQL-оператор виконується mysql_query($strSQL) або die (mysql_error()); // Закриття з'єднання mysql_close();

?>

БД оновлено!

Збереження введення користувача в БД

Припустимо, у вас є проста форма: SaveЦя форма надсилається у файл

insert.php

, де ви, як показано в Уроці 11, можете отримати введення користувача, запросивши вміст форми. У даному випадку SQL-оператор може бути таким:

strSQL = "INSERT INTO people(FirstName) values("" . $_POST["FirstName"] . "")"

Аналогічно можна запитати дані кук, сесій рядків запиту, etc.

Найбільш поширені помилки початківців

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

Неправильний тип даних

Важливо, щоб дані та тип даних стовпця відповідали один одному. Кожен стовпець може містити дані певного типу.

Наступний скріншот показує типи даних таблиці “people” з нашого прикладу. Видається помилка, якщо ви, наприклад, спробуєте вставити текст або число в поле даних. Отже, встановлюйте тип даних якнайточніше. Нижче наведено найбільш вживані типи даних:
Значення
Тип даних Розмір
CHR
Текст чи комбінація тексту та чисел. Може також використовуватися для числа, які не використовуються під час розрахунків (напр., номери телефонів). До 255 символів - або довжина, що визначається "Length"
TEXT
Великі блоки тексту або комбінація тексту та чисел. До 65,535 символів
INT
Числові дані для математичних обчислень. 4 байти
DATE
Дати у форматі РРР-ММ-ДД 4 байти
3 байти
TIME Час у форматі чч:мм:сс

DATETIME

Дата та час у форматі РРР-ММ-ДД чч:мм:сс

8 байтех, з пісні слів не викинеш! Але їх можна видалити, оновити чи вставити інші. Головне, щоб слова були внесені до бази даних. Сьогодні ми розповімо, як відбувається запис даних 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 за допомогою PHP ми застосовували «джентельменський набір» від Денвера. До нього входить локальний сервер Apache, сервер MySQL, phpMyAdmin та ще кілька корисних засобів створення та тестування програмного коду.

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

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

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

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

Останнє оновлення: 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-ін'єкцій.


Урок буде заснований на формі зворотного зв'язкунеобхідно практично на будь-якому сайті.

Крок перший: Створення бази даних у MySQL

Відкриваємо phpMyAdmin(входить до базового пакету Denwerа), і створюємо базу з назвою " test_base", кодування вибираємо" CP1251_general_ci".

Крок другий: Створення таблиці в MySQLза допомогою SQL-запиту

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

Створюємо таблицю під назвою " test_tableі з шістьма полями з назвами:
"name" - тут зберігатимуться імена користувачів;
"email" - тут зберігатимуться адреси електронних скриньок користувачів;
"theme" - тут зберігатиметься тема повідомлення;
"message" - тут зберігатимуться повідомлення;
"data" - тут зберігатиметься дата відправлення повідомлення;
"id" - ідентифікаційний номер запису (рядки), ключове поле.

SQL-запит:
create table test_table(
id int(11) not null auto_increment,
name varchar(255) not null,
email varchar(255) not null,
theme varchar(255) not null,
message text not null,
data date not null,
primary key (id)
);

Крок третій: Створення форми

index.html:

Форма із збереженням у MySQL

Приклад форми із збереженням даних у MySQL

























Надсилання запиту
Ім'я:
E-Mail:
Тема повідомлення:
Повідомлення:
























Крок четвертий: Створення оброблювача форми save_form.php" зі збереженням отриманих даних у MySQL

save_form.php:





/* Таблиця MySQL, у якій зберігатимуться дані */
$ table = "test_table";

/* Створюємо з'єднання */

/* Визначаємо поточну дату */
$cdate = date("Y-m-d");

/* Складаємо запит для вставки інформації до таблиці
name...date - назва конкретних полів у базі;
$_POST["test_name"]... $_POST["test_mess"] - у цих змінних містяться дані, отримані з форми */
$query = "INSERT INTO $table SET name="".$_POST["test_name"]."", email="".$_POST["test_mail"]."",
theme="".$_POST["test_theme"]."", message="".$_POST["test_mess"]."", data="$cdate"";

/* Закриваємо з'єднання */
mysql_close();

/* У разі успішного збереження виводимо повідомлення та посилання повернення */
echo ("


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



Повернутися назад
");

Крок п'ятий: Виведення збережених даних " view_data.php"

view_data.php:

/* З'єднуємося з базою даних */
$hostname = "localhost"; // назва/шлях сервера, з MySQL
$username = "root"; // ім'я користувача (у Denwer`і за промовчанням "root")
$password = ""; // пароль користувача (у Denwer`і за замовчуванням пароль відсутній, цей параметр можна залишити порожнім)
$dbName = "test_base"; // Назва бази даних


$ table = "test_table";

/* Створюємо з'єднання */
mysql_connect($hostname, $username, $password) or die ("Не можу створити з'єднання");

/* Вибираємо базу даних. Якщо буде помилка - вивести її */
mysql_select_db($dbName) або die (mysql_error());

/* Складаємо запит для вилучення даних з полів "name", "email", "theme",
"message", "data" таблиці "test_table" */
$query = "SELECT id, name, email, theme, message, data FROM $table";

/* Виконуємо запит. Якщо станеться помилка – вивести її. */


echo ("

Виведення даних з MySQL

Виведення раніше збережених даних з таблиці MySQL










");



echo "

\n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n\n";
}

Echo ("

# дата звернення Імена користувачів E-Mail користувачів Тема повідомлення Повідомлення користувачів
".$row["id"]."".$row["data"]."".$row["name"]."".$row["email"]."".$row["theme"]."".$row["message"]."
\n");

/* Закриваємо з'єднання */
mysql_close();

Крок шостий: Видалення записів із бази даних " del_data.php"

del_data.php:

/* З'єднуємося з базою даних */
$hostname = "localhost"; // назва/шлях сервера, з MySQL
$username = "root"; // ім'я користувача (у Denwer`і за промовчанням "root")
$password = ""; // пароль користувача (у Denwer`і за замовчуванням пароль відсутній, цей параметр можна залишити порожнім)
$dbName = "test_base"; // Назва бази даних

/* Таблиця MySQL, у якій зберігаються дані */
$ table = "test_table";

/* Створюємо з'єднання */
mysql_connect($hostname, $username, $password) or die ("Не можу створити з'єднання");

/* Вибираємо базу даних. Якщо буде помилка - вивести її */
mysql_select_db($dbName) або die (mysql_error());

/* Якщо було натиснуто посилання видалення, видаляємо запис */
$del = $query = "delete від $table where (id="$del")";
/* Виконуємо запит. Якщо станеться помилка – вивести її. */
mysql_query($query) або die(mysql_error());



/* Виконуємо запит. Якщо станеться помилка – вивести її. */
$res = mysql_query($query) або die(mysql_error());

$row = mysql_num_rows($res);

/* Виводимо дані з таблиці */
echo ("

Виведення та видалення даних з MySQL

Виведення та видалення раніше збережених даних з таблиці MySQL











");

/* Цикл виведення даних із бази конкретних полів */
while ($row = mysql_fetch_array($res)) (
echo "

\n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
/* Генеруємо посилання для видалення поля */
echo " \n";
echo "\n";
}

Echo ("

# дата звернення Імена користувачів E-Mail користувачів Тема повідомлення Повідомлення користувачів Вилучення
".$row["id"]."".$row["data"]."".$row["name"]."".$row["email"]."".$row["theme"]."".$row["message"]."видалити
\n");

/* Закриваємо з'єднання */
mysql_close();

Крок сьомий: Редагування та оновлення записів у базі " update_data.php"

update_data.php:

/* З'єднуємося з базою даних */
$hostname = "localhost"; // назва/шлях сервера, з MySQL
$username = "root"; // ім'я користувача (у Denwer`і за промовчанням "root")
$password = ""; // пароль користувача (у Denwer`і за замовчуванням пароль відсутній, цей параметр можна залишити порожнім)
$dbName = "test_base"; // Назва бази даних

/* Таблиця MySQL, у якій зберігаються дані */
$ table = "test_table";

/* Створюємо з'єднання */
mysql_connect($hostname, $username, $password) or die ("Не можу створити з'єднання");

/* Вибираємо базу даних. Якщо буде помилка - вивести її */
mysql_select_db($dbName) або die (mysql_error());

/* Якщо була натиснута кнопка редагування, вносимо зміни */
if(@$submit_edit) (
$query = "UPDATE $table SET name="$test_name", email="$test_mail", theme="$test_theme", message="$test_mess" WHERE id="$update"";
/* Виконуємо запит. Якщо станеться помилка – вивести її. */
mysql_query($query) або die (mysql_error());
}

/* Заносимо в змінну $res всю базу даних */
$query = "SELECT * FROM $table";
/* Виконуємо запит. Якщо станеться помилка – вивести її. */
$res = mysql_query($query) або die(mysql_error());
/* Дізнаємось кількість записів у базі даних */
$row = mysql_num_rows($res);

/* Виводимо дані з таблиці */
echo ("

Редагування та оновлення даних

Редагування та оновлення даних у таблиці MySQL


");

/* Цикл виведення даних із бази конкретних полів */
while ($row = mysql_fetch_array($res)) (
echo "

\n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo "\n";
echo " \n";
echo "\n";
echo " \n";
echo "\n";
echo " \n";
echo "\n";
echo " \n";
echo "\n";
echo " \n";
echo "
#".$row["id"]."
".$row["data"]."
Ім'я користувача:
E-Mail користувача:
Тема повідомлення:
Повідомлення:
\n\n";
}

/* Закриваємо з'єднання */
mysql_close();

Ну ось і все, приємного кодингу:1133:

_________________________________

У цьому посібнику ви познайомитеся з тим, як почати керувати базою даних із вашого 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)"); Parameter is the placeholder in the statement above - the second parameter is a variable to is should refer to $my_Insert_Statement->bindParam(:first_name, $first_Name); bindParam(:email, $email); // Execute the query using the data we just defined // The execute() method returns TRUE if it is successful and FALSE if it is not, allowing you to write your messages here if ( $my_Insert_Statement->execute()) ( echo "New record created successfully"; ) else ( echo "Unable to create record"; ) // У цьому пункті ви можете змінити дані про variables і execute again to add more 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 стане в нагоді незалежно від того, ви вчитеся програмувати або вже створюєте свій сайт.