Запис даних у базу даних

 

Тепер потрібно зробити саме головне - відправити дані з цієї форми в нашу базу даних. Як ви вже знаєте, для того щоб записати дані в таблицю, використовується команда INSERT мови SQL. Наприклад:

mysql> INSERT INTO Artifacts SET title='Петров';

Виникає питання, як можна скористатися такою командою (або будь-якою іншою командою SQL) у PHP скрипті. Для цього існує функція mysql_query().

Синтаксис mysql_query

ресурс mysql_query ( рядок query [, ресурс link_identifier])

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

Зауваження: рядок запиту НЕ повинен закінчуватися крапкою з комою.

Тільки для запитів SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() повертає вказівник на результат запиту, або FALSE, якщо запит не був виконаний. В інших випадках mysql_query() повертає TRUE, якщо запит виконаний успішно, і FALSE - у випадку помилки. Значення, не рівне FALSE, говорить про те, що запит був виконаний успішно. Воно не говорить про кількість змінених або повернутих рядів. Цілком можлива ситуація, коли успішний запит не торкнеться жодного ряду. mysql_query() також вважається помилковим і поверне FALSE, якщо в користувача недостатньо прав для роботи з зазначеною в запиті таблицею.

Отже, тепер ми знаємо, як відправити запит на вставку рядків у базу даних. Помітимо, що в попередньому прикладі елементи форми ми назвали іменами полів таблиці. Тому вони будуть доступні в скрипті insert.php, що обробляє дані форми, як змінні виду

$_POST['ім'я_поля'].
<?
$conn=mysql_connect("localhost","nina","123");// встановлюємо з’єднання
$database = "book";
$table_name = "Artifacts";
mysql_select_db($database); // обираємо базу даних
$list_f = mysql_list_fields($database,$table_name); 
        // отримуємо список полів в базі
$n = mysql_num_fields($list_f); 
        // кількість стрічок в результаті попереднього запиту
        // створимо один запит відразу для всіх полів таблиці
$sql = "INSERT INTO $table_name SET ";  
        // починаємо створювати запит, перебираємо всі поля таблиці
for($i=0;$i<$n; $i++){
$name_f = mysql_field_name ($list_f,$i); // визначаємо ім’я поля
$value = $_POST[$name_f]; // обчислюємо значення поля
        $j = $i + 1;
        $sql = $sql . $name_f." = '$value'";  
        // дописуємо в стрічку $sql пару ім’я=значення
        if ($j <> $n) $sql = $sql . ", ";  
        // якщо поле не останнєв списку, то ставимо кому
}
// перед тим, як записувати що небуть у базу можна подивитися, 
//який запит отримаєтьмя 
//echo $sql; 
$result = mysql_query($sql,$conn); // відправляємо запит 
// виводимо повідомлення чи успішно виконано запит
if (!result) echo " Can't add ($table_name) "; 
        else echo "Success!<br>"; 
?>

Однак тут є одна тонкість. При розв’язанні ми не враховували той факт, що значення деяких полів (author, photo) повинні братися з інших таблиць (Persons, Images). Потрібно дописати програму таким чином, щоб була можливість вводити в такі поля правильні значення. Але ми робити цього не будемо, оскільки завдання лекції полягає в тому, щоб познайомити читача з елементами технології, а не в тому, щоб створити працюючу систему.