Яка функція в PHP використовується для виконання SQL запитів до бази даних MySQL?
Blog Posted by admin on 2-2-2025 in Взаємодія в роботі
За виконання запитів відповідають функції mysqli::query() , mysqli::real_query() та mysqli::multi_query() . Найчастіше застосовується функція mysqli::query() , тому що вона виконує відразу дві задачі: виконує запит і буферизує на клієнті результат запиту (якщо він є). Виклик mysqli::query() ідентичний послідовному виклику функцій mysqli::real_query() та mysqli::store_result() .
Приклад #1 Виконання запитів
mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$ mysqli = new mysqli ( "example.com", "user", "password", "database");
$ mysqli -> query ( "DROP TABLE IF EXISTS test");
$ mysqli -> query ( "CREATE TABLE test(id INT)");
Буферизація результатів запиту
Після виконання запиту результати можна отримати відразу, або вважати рядок за рядком з сервера. Буферизація набору результатів за клієнта дозволяє серверу якомога раніше звільнити ресурси, пов'язані з результатами запиту. Простіше кажучи, покупці повільно використовують набори результатів. Тому рекомендується використовувати буферизовані набори результатів. mysqli::query() поєднує виконання запиту та буферизацію набору результатів.
PHP-програми можуть вільно оперувати даними всередині буферизованих результуючих наборів. Швидка навігація рядками наборів обумовлена тим, що набори повністю розташовуються в пам'яті клієнта. Слід пам'ятати, що найчастіше обробка результатів клієнта простіше, ніж засобами сервера.
Приклад #2 Навігація рядками буферизованої результуючої таблиці
mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$ mysqli = new mysqli ( "example.com", "user", "password", "database");
$ mysqli -> query ( "DROP TABLE IF EXISTS test");
$ mysqli -> query ( "CREATE TABLE test(id INT)");
$mysqli -> query ( "INSERT INTO test(id) VALUES (1), (2), (3)");
$result = $mysqli -> query ( "SELECT id FROM test ORDER BY id ASC");
echo "Зворотний порядок. \n" ;
for ( $row_no = $result -> num_rows – 1 ; $row_no >= 0 ; $row_no –) $result -> data_seek ( $row_no );
$row = $result -> fetch_assoc();
echo "id color: #007700">. $row['id']. "\n";
>
echo "Вихідний порядок рядків. \n" ;
foreach ($result as $row) echo "id color: #007700">. $row['id']. "\n";
>
Результат виконання наведеного прикладу:
Зворотний порядок. порядок рядків.
Небуферизовані результуючі набори
Якщо клієнтські ресурси обмежені, і в той же час не потрібно підтримувати низьке навантаження на сервер, можна використовувати буферизовані результуючі набори. Навігація за такими таблицями неможлива, тому що так чи інакше мають бути оброблені всі рядки набору.
Приклад #3 Навігація рядками небуферизованої результуючої таблиці
$ mysqli -> real_query ( "SELECT id FROM test ORDER BY id ASC");
$result = $mysqli -> use_result();
echo "Порядок рядків у результуючому наборі. \n" ;
foreach ($result as $row) echo "id color: #007700">. $row['id']. "\n";
>
Типи даних значень у результуючій таблиці
Функції mysqli::query() , mysqli::real_query() і mysqli::multi_query() призначені для виконання запитів, що не готуються. На рівні протоколу клієнт-серверної взаємодії MySQL за виконання запитів відповідають команда COM_QUERY та текстовий протокол. Коли використовується текстовий протокол, сервер MySQL перед відправкою клієнту перетворює всі дані в результуючому наборі текстових рядків. Це перетворення виконується незалежно від типу даних SQL-стовпця результуючої таблиці. Клієнтські бібліотеки mysql, своєю чергою, отримують усі дані, приймаючи їх за рядки. На клієнті не проводиться жодного зворотного перетворення до вихідних типів, всі дані, отримані програмою залишаються PHP рядками.
Приклад #4 Текстовий протокол за промовчанням повертає рядки
mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$ mysqli = new mysqli ( "example.com", "user", "password", "database");
$ mysqli -> query ( "DROP TABLE IF EXISTS test");
$ mysqli -> query ( "CREATE TABLE test(id INT, label CHAR(1))");
$mysqli -> query ( "INSERT INTO test(id, label) VALUES (1, 'a')" );
$result = $mysqli -> query ( "SELECT id, label FROM test WHERE > );
$row = $result -> fetch_assoc();
printf ( "id = %s (%s)\n" , $row [ 'id' ], gettype ( $row [ 'id' ]));
printf ( "label = %s (%s)\n" , $row [ 'label' ], gettype ( $row [ 'label' ])));
Результат виконання наведеного прикладу:
id = 1 (string) label = a (string)
Якщо використовується бібліотека mysqlnd, можна включити перетворення цілих чисел і чисел з плаваючою точкою зі стовпців таблиці в PHP числа. Робиться це завданням налаштування підключення MYSQLI_OPT_INT_AND_FLOAT_NATIVE . У такому випадку mysqlnd перевірятиме метадані стовпців і перетворюватиме SQL-числа цих полів у PHP-числа, якщо ці значення не виходять за рамки допустимих діапазонів типів даних PHP. Тобто, наприклад, SQL INT число потрапить у PHP додаток у вигляді цілого (integer).
Приклад #5 Отримання вихідних типів даних у програмі
mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$ mysqli = new mysqli ();
$ mysqli -> options ( MYSQLI_OPT_INT_AND_FLOAT_NATIVE , 1 );
$ mysqli -> real_connect ( "example.com", "user", "password", "database");
$ mysqli -> query ( "DROP TABLE IF EXISTS test");
$ mysqli -> query ( "CREATE TABLE test(id INT, label CHAR(1))");
$mysqli -> query ( "INSERT INTO test(id, label) VALUES (1, 'a')" );
$result = $mysqli -> query ( "SELECT id, label FROM test WHERE > );
$row = $result -> fetch_assoc();
printf ( "id = %s (%s)\n" , $row [ 'id' ], gettype ( $row [ 'id' ]));
printf ( "label = %s (%s)\n" , $row [ 'label' ], gettype ( $row [ 'label' ])));
Результат виконання наведеного прикладу:
id = 1 (integer) label = a (string)
Дивіться також
SQL – це мова запитів, яка дозволяє спілкуватися з базами даних, тобто вибирати інформацію від туди, або записувати інформацію туди.
MySQL – це система управління базами даних, тобто це програма, яка дозволяє зберігати бази даних на сервері і надавати доступ до інформації, яка там зберігається.
Найбільш необхідні функції для роботи з базами даних ( Процедурний інтерфейс ).
mysqli_connect()- відкриває нове з'єднання з MySQL сервером. Повертає об'єкт з підключенням до сервера MySQL.
mysqli_connect_error() – повертає опис останньої помилки підключення. Повідомлення про помилку. NULL, якщо помилка відсутня.
mysqli_query()- виконує запит до бази даних. Повертає FALSE у разі невдачі. У разі успішного виконання запитів SELECT mysqli_query() поверне об'єкт mysqli_result. Для решти успішних запитів mysqli_query() поверне TRUE.
mysqli_error()- повертає рядок з описом останньої помилки.
mysqli_fetch_all()(mysqli_fetch_array())- вибирає всі рядки з результуючого набору і поміщає їх в асоціативний масив, звичайний масив або в обидва.
mysqli_fetch_assoc()- витягує результуючий ряд у вигляді асоціативного масиву. Повертає асоціативний масив, який відповідає результуючій вибірці або NULL, якщо інших рядів не існує.
mysqli_num_rows()- отримує число рядів (кількість рядків) в результуючій вибірці.
mysqli_affected_rows()- отримує кількість рядків, порушених попередньою операцією MySQL. Повертає кількість рядків, які торкнулися останнім INSERT, UPDATE, REPLACE або DELETE запитом. Ціле число, більше нуля, означає кількість порушених чи отриманих рядків. Нуль означає, що запитом виду UPDATE не оновлено жодного запису, або що жодний рядок не відповідає умові WHERE у запиті, або що запит ще не було виконано.Значення -1 свідчить про те, що запит повернув помилку.
mysqli_real_escape_string() – Екранує спеціальні символи в рядку, який використовується в SQL-запиті, беручи до уваги кодування з'єднання.
Алгоритм роботи з базами даних
– підключення до сервера MySQL , це відповідає функція mysqli_connect() ;
– далі відправити який-небудь запит на сервер (mysqli_query()), наприклад, на вибірку інформації, зміну інформації, додавання інформації;
– Одержати в прийнятній формі інформацію з бази даних і, отримавши цю інформацію, її можна використовувати.
Створимо базу даних.
Практично на будь-якому хостингу є спеціальна програма для роботи з базами даних, для їхнього управління і називається вона. phpMyAdmin.
Створимо базу даних gb , яка складатиметься з однієї таблиці – gb .
У нашій таблиці буде чотири колонки (чотири поля): поле для введення імені – name , поле для введення тексту – text , поле для введення дати – date та ще одне поле, яке нумеруватиме ряди – поле id (індифікатор) – по ньому легко отримати доступ до того чи іншого запису.
Структура таблиці gb:
– для поля id вибираємо:
тип ——- INT (ціле число),
атрибути ——- UNSIGNED (без знака),
A_l(AUTO_INCREMENT) – ставимо галочку. (Збільшення значення id на одиницю автоматично)
За промовчанням ——- CURRENT_TIMEST (Сервер автоматично заповнюватиме це поле поточним часом)
Структура таблиці gb:
Структура таблиці готова і ми можемо зберегти її:
Запишемо до неї дані з файлу gb.txt з розділу " Практика створення гостьової книги “.
Огляд таблиці gb:
Підключення до бази даних
mysqli_connect()
– відкриває нове з'єднання з MySQL-Сервером. Повертає об'єкт з підключенням до сервера MySQL.
Щоб підключитися до бази даних, ми функції mysqli_connect() повинні передати кілька параметрів:
– ім'я сервера (host)
– Ім'я користувача, який підключається до бази даних (username)
– Його пароль (passwd)
– ім'я бази даних (dbname)
Щоб побачити помилки в читабельній формі, необхідно застосувати функцію –
mysqli_connect_error()
– вона повертає опис останньої помилки підключення. Поверне NULL, якщо помилка відсутня.
Текст помилки бажано виводити за умовою if(!db) – якщо немає підключення, тоді ми виведемо текст помилки mysqli_connect_error(), і завершимо подальше виконання скрипту – die.
Щоб вивести свій текст помилки, ми додаємо умову: якщо не вдалося підключитися до бази даних – завершуємо роботу і виводимо повідомлення: or die('Помилка з'єднання з БД');
Створимо файл index.php і в нього запишемо:
header ( "Content-type: text/html; charset=utf-8");
error_reporting (- 1);
// Підключення до бази даних
$db = @ mysqli_connect ( '127.0.0.1', 'root', '', 'gb' ) or die ( 'Помилка з'єднання з БД'); //echo mysqli_connect_error();
// якщо немає підключення, тоді ми виведемо текст помилки mysqli_connect_error(), і завершимо подальше виконання скрипту – die
if (! $ db ) die ( mysqli_connect_error ());
//var_dump($db); // дивимося, що вийшло
?>
– у змінну $db повертатиметься об'єкт з'єднання (або підключення) (або покажчик на відкрите з'єднання)
– першим параметром вкажемо 127.0.0.1 (або – localhost);
– другим параметром вкажемо ім'я користувача – root;
– третім параметром вкажемо пароль – у нас буде порожній рядок '';
– четвертим параметром вкажемо ім'я бази даних – у нас буде gb.
– Знак собаки (@) – пригнічує помилки, тобто не виводить їх на екран.
Якщо ми не встановили підключення, отримуємо false , а не об'єкт підключення.
Встановлення кодування з'єднання
mysqli_set_charset()
– Встановлюємо кодування з'єднання.
– першим параметром передаємо покажчик відкритого з'єднання – $ db;
– другим параметром – бажане кодування "utf8" ("utf8" – записуємо без тире.)
– or die – або помри та виведи на екран: 'Не встановлено кодування'
header ( "Content-type: text/html; charset=utf-8");
error_reporting (- 1);
// Підключення до бази даних
$db = @ mysqli_connect ( '127.0.0.1', 'root', '', 'gb' ) or die ( 'Помилка з'єднання з БД'); //echo mysqli_connect_error();
// якщо немає підключення, тоді ми виведемо текст помилки mysqli_connect_error(), і завершимо подальше виконання скрипту – die
if (! $ db ) die ( mysqli_connect_error ());
//var_dump($db); // дивимося, що вийшло
// Встановлення кодування з'єднання
mysqli_set_charset ( $db , "utf8" ) or die ( 'Не встановлено кодування' );
?>
Запит до бази даних
mysqli_query()
– Виконуємо запит до бази даних.
У разі невдачі – поверне FALSE. (Це дозволяє використовувати умову if).
У разі успішного виконання запиту на вибірку SELECT функція mysqli_query() поверне об'єкт mysqli_result .
Для решти успішних запитів ця функція поверне TRUE.
Додавання нових даних (INSERT)
Додамо нові дані до нашої таблиці – пишемо SQL-Запит на вставку даних:
У змінну $insert запишемо:
INSERT INTO – (вставити в);
gb – (ім'я таблиці);
name, text – поля, які ми будемо додавати дані (поля id і date сервер заповнює автоматично);
VALUES – значення – 'Оля', 'ПРИВІТ! ПРИВІТ!' (рядкові дані – записуємо у лапках);
Запит готовий і ми його можемо виконувати:
У змінну $res_insert повернемо результат роботи mysqli_query() .
– першим параметром функція приймає індифікатор з'єднання – $ db;
– другим параметром – сам запит, збережений у змінну $insert (можна записувати не зберігаючи змінну: "INSERT INTO . " ).
– перевіряємо виконання запиту: якщо запит успішно відпрацював виводимо 'Ok', якщо ні – виводимо 'Error'.
mysqli_error()
– Виводимо рядок з описом останньої помилки (якщо вона є),
як параметр передаємо їй покажчик на підключення – $ db.
– другий спосіб подивитися помилку – вивести сам запит (його ми можемо скопіювати та спробувати виконати через вкладку SQL).
header ( "Content-type: text/html; charset=utf-8");
error_reporting (- 1);
// Підключення до бази даних
$db = @ mysqli_connect ( '127.0.0.1', 'root', '', 'gb' ) or die ( 'Помилка з'єднання з БД'); if (! $ db ) die ( mysqli_connect_error ());
// Встановлення кодування з'єднання
mysqli_set_charset ( $db , "utf8" ) or die ( 'Не встановлено кодування' );
// Запит до бази даних (додамо нові дані до нашої таблиці)
// готуємо запит
$insert = "INSERT INTO gb (name, text) VALUES ('Оля', 'ПРИВІТ! ПРИВІТ!')" ;
// виконуємо запит
$res_insert = mysqli_query ($ db, $ insert);
// перевіряємо виконання запиту
if ($ res_insert) echo 'Ok';
else echo 'Error';
// Виводимо рядок з описом останньої помилки (якщо вона є)
echo mysqli_error ($ db);
/ / Другий спосіб подивитися помилку – вивести сам запит
echo $insert;
?>
Обновимо сторінку та оновимо таблицю – з'являється новий запис у таблиці gb:
Оновлення даних (UPDATE)
Пишемо SQL-Запит на оновлення даних.
У змінну $update запишемо наш запит:
UPDATE gb – (оновлення gb),
SET text – (у полі text),
CONCAT (text, '|||') – об'єднуємо рядкові значення text та '|||',
WHERE id > 4 – де id > 4,
or die – або помри і,
mysqli_error($db) – виведи помилку.
header ( "Content-type: text/html; charset=utf-8");
error_reporting (- 1);
// Підключення до бази даних
$db = @ mysqli_connect ( '127.0.0.1', 'root', '', 'gb' ) or die ( 'Помилка з'єднання з БД'); if (! $ db ) die ( mysqli_connect_error ());
// Встановлення кодування з'єднання
mysqli_set_charset ( $db , "utf8" ) or die ( 'Не встановлено кодування' );
// Запит до бази даних (оновлюємо дані у нашій таблиці)
// готуємо запит
$update = "UPDATE gb SET = CONCAT (text, '|||') WHERE id > 4" ;
// виконуємо запит
$res_update = mysqli_query ($db, $update) або die (mysqli_error ($db));
?>
результат виконання запиту:
Видалення даних (DELETE)
Пишемо SQL-запит видалення даних.
У змінну $delete запишемо наш запит:
DELETE FROM gb – видалити з gb,
WHERE – де >
mysqli_affected_rows()
– дізнаємося кількість рядків, які торкнулися в процесі попереднього запиту. Як параметр передаємо їй покажчик на підключення – $db
header ( "Content-type: text/html; charset=utf-8");
error_reporting (- 1);
// Підключення до бази даних
$db = @ mysqli_connect ( '127.0.0.1', 'root', '', 'gb' ) or die ( 'Помилка з'єднання з БД'); if (! $ db ) die ( mysqli_connect_error ());
// Встановлення кодування з'єднання
mysqli_set_charset ( $db , "utf8" ) or die ( 'Не встановлено кодування' );
// Запит до бази даних (видаляємо дані в нашій таблиці)
// готуємо запит
$delete = "DELETE FROM gb WHERE >;
// виконуємо запит
$res_delete = mysqli_query ($db, $delete);
// дізнаємося кількість рядків, які торкнулися в процесі попереднього запиту (1 або 0 або -1)
echo mysqli_affected_rows ($ db);
?>
Обновимо сторінку та оновимо таблицю, отримаємо результат – п'ятого запису в таблиці немає.
Якщо в результаті видалення запису утворюється проміжок у полі id , наприклад: 1,2,3. 5,6, то намагатися зрушити номери, щоб вони йшли по порядку, не можна. За полем id стежить сервер і його роботу втручатися не можна. Це поле має первинний ключ – сервер стежить за його унікальністю і кожен наступний номер більший за одиницю попереднього. Ці номери часто використовуються для вибірки даних і зсув нумерації може призвести до плутанини з посиланнями.
Вибірка даних (SELECT)
Пишемо SQL-Запит на вибірку даних.
У змінну $res запишемо наш запит:
SELECT – вибрати,
* – все,
FROM gb – з таблиці gb.
Отримання масиву даних за допомогою функції:
mysqli_fetch_all()
– У змінній $res буде міститися об'єкт mysqli_result , простіше кажучи, якась
посилання на ці дані. За допомогою функції mysqli_fetch_all() за цим посиланням отримаємо
необхідні дані в масив $date. Як параметр ця функція приймає
результуючий набір $res. Для вказівки типу одержуваного масиву застосовуються константи.
Константи функції mysqli_fetch_all(): php.net
Константа MySQLI_NUM (за замовчуванням) дозволяє отримати нумерований масив.
Константа MySQLI_ASSOC дозволяє замість нумерованого отримати асоціативний масив.
Константа MYSQLI_BOTH дозволяє отримати обидва масиви.
Щоб отримати потрібні нам поля, їх просто потрібно перерахувати, наприклад:
"SELECT name, text, date FROM gb" .
Якщо потрібно сортувати у зворотному порядку, використовується команда:
ORDER BY id DESC , де id – поле, яким будемо сортувати.
Щоб подивитися, скільки рядів було вибрано, можна скористатися функцією
mysqli_num_rows()
– Як параметр вона приймає сам результуючий запит $res .
Далі ми можемо пройти в циклі foreach масивом $date і вивести те, що нам потрібно.
header ( "Content-type: text/html; charset=utf-8");
error_reporting (- 1);
// функція для зручного перегляду масивів
function print_arr ($arr) <
echo '
' .
‘ ;
>
// Підключення до бази даних
$db = @ mysqli_connect ( '127.0.0.1', 'root', '', 'gb' ) or die ( 'Помилка з'єднання з БД' );
// Встановлення кодування з'єднання
mysqli_set_charset ( $db , "utf8" ) or die ( 'Не встановлено кодування' );
// Запит до бази даних (вибираємо дані з нашої таблиці)
// виконуємо запит
$res = mysqli_query ( $db , "SELECT name, text, date FROM gb ORDER BY id DESC" );
// дивимося, скільки рядів було обрано (4)
echo mysqli_num_rows ($ res);
// Отримуємо дані в асоціативний масив
$date = mysqli_fetch_all ( $res , MYSQLI_ASSOC );
// роздрукуємо масив $date
print_arr ($ data);
//var_dump($date);
// пройдемося в циклі за масивом $date і виведемо отримані дані
foreach ( $date as $item ) <
echo "Name: < $item [ 'name' ]>
” ;
echo "Text: < $item [ 'text' ]>
” ;
echo "Date: < $item [ 'date' ]>
” ;
echo '
‘ ;
>
?>
виведе:
4
Name: Ваня
Text: Hello!
Date: 2019-05-21 22:26:04
Name: Петро
Text:)))))!
Date: 2019-05-21 22:03:41
Name: Вася
Text: Привіт! Це друге повідомлення!!
Date: 2019-05-21 21:52:24
Name: Андрій
Text: Привіт! Це перше повідомлення!
Date: 2019-05-21 21:51:39
Отримання масиву даних за допомогою функції:
mysqli_fetch_assoc()
– ця функція отримує результуючий ряд у вигляді асоціативного масиву.
Створимо масив $date2 = []; – ми його формуватимемо самостійно.
Далі ми будемо використовувати функцію mysqli_fetch_assoc(), яка отримує лише поточний рядок даних. Щоб отримати всі рядки, необхідно за результатами пройти в циклі: while($row = mysqli_fetch_assoc($res)) . У змінну $row ми отримаємо результат роботи функції mysqli_fetch_assoc($res) , параметром якої буде результуючий набір даних $res.
Щоб переконатися, що є дані, роздрукуємо змінну $row: print_arr($row).
Далі у змінну $date2 за ключом $row['id'] покладемо масив $row.
Роздрукуємо змінну $date2.
Далі пройдемося в циклі foreach по масиву $date2 і виведемо отримані дані.
header ( "Content-type: text/html; charset=utf-8");
error_reporting (- 1);
// функція для зручного перегляду масивів
function print_arr ($arr) <
echo '
'. print_r ($arr, true). '
‘ ;
>
// Підключення до бази даних
$db = @ mysqli_connect ( '127.0.0.1', 'root', '', 'gb' ) or die ( 'Помилка з'єднання з БД'); if (! $ db ) die ( mysqli_connect_error ());
// Встановлення кодування з'єднання
mysqli_set_charset ( $db , "utf8" ) or die ( 'Не встановлено кодування' );
// Запит до бази даних (вибираємо дані з нашої таблиці)
// виконуємо запит
$res = mysqli_query ( $db , "SELECT id, name, text, date FROM gb ORDER BY id DESC" );
// Створимо масив
$date2 = [];
// Далі ми будемо використовувати функцію mysqli_fetch_assoc(), яка отримує лише поточний рядок даних
// У змінну $row ми отримаємо результат роботи mysqli_fetch_assoc($res)
// Щоб отримати всі рядки, необхідно за результатами пройти в циклі while
while ($ row = mysqli_fetch_assoc ($ res)) // print_arr ($ row);
// у змінну $date2 за ключом $row['id'] покладемо масив $row
$date2 [$row['id']] = $row;
>
print_arr ($ date2);
// пройдемося в циклі за масивом $date2 і виведемо отримані дані
foreach ($date2 as $item) // на кожній ітерації отримуємо:
echo "Name: < $item [ 'name' ]>
” ;
echo "Text: < $item [ 'text' ]>
” ;
echo "Date: < $item [ 'date' ]>
” ;
echo '
‘ ;
>
?>
– в результаті роздруківки print_arr($date2) отримаємо:
Array
(
[4] => Array
(
[id] => 4
[name] => Ваня
[text] => Hello!
[date] => 2019-05-21 22:26:04
)
[3] => Array
(
[id] => 3
[name] => Петя
[text] =>)))))!
[date] => 2019-05-21 22:03:41
)
[2] => Array
(
[id] => 2
[name] => Вася
[text] => Привіт!
Це друге повідомлення!!
[date] => 2019-05-21 21:52:24
)
[1] => Array
(
[id] => 1
[name] => Андрій
[text] => Привіт!
Це перше повідомлення!
[date] => 2019-05-21 21:51:39
)
)
– тут як ключі нумерація починається не з нуля, а з одиниці.
– в результаті виконання циклу foreach отримаємо:
Name: Ваня
Text: Hello!
Date: 2019-05-21 22:26:04
Name: Петро
Text: )))))!
Date: 2019-05-21 22:03:41
Name: Вася
Text: Привіт! Це друге повідомлення!!
Date: 2019-05-21 21:52:24
Name: Андрій
Text: Привіт! Це перше повідомлення!
Date: 2019-05-21 21:51:39
mysqli_real_escape_string()
– ця функція екранує спеціальні символи в рядку для використання в SQL-Вираженні.
– першим параметром приймає індифікатор з'єднання – $db
– Другим параметром – рядок, який потрібно екранувати – $ str.
Повертає екранований рядок.
// Створимо рядок з апострофом
$str = "d'Artanian";
// Повернемо в змінну $str, оброблену функцією нашу змінну $str
$str = mysqli_real_escape_string ($db, $str);
// Запит до бази даних (додамо нові дані до нашої таблиці – рядок з апострофом)
$query = "INSERT INTO gb (name, text) VALUES ( $str , 'Ім'я з апострофом')" ; // готуємо запит
mysqli_query ( $ db , $ query ) or die ( mysqli_error ( $ db )); // виконуємо запит
// Запит до бази даних (вибираємо дані з нашої таблиці)
$res = mysqli_query ( $db , "SELECT name, text, date FROM gb ORDER BY id DESC" ); // виконуємо запит
$date = mysqli_fetch_all ( $res , MYSQLI_ASSOC ); // Отримуємо дані в асоціативний масив
// пройдемося в циклі за масивом $date і виведемо отримані дані
foreach ( $date as $item ) <
echo "Name: < $item [ 'name' ]>
” ;
echo "Text: < $item [ 'text' ]>
” ;
echo "Date: < $item [ 'date' ]>
” ;
echo '
‘ ;
>
?>
виведе:
Name: d'Artanian
Text: Ім'я з апострофом
Date: 2019-05-26 21:51:08
.
.
.
d'Artanian успішно вставився до таблиці gb