Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



Отже, форма створена. Тепер потрібно зробити саме головне - відправити дані з цієї форми в нашу базу даних. Як ви вже знаєте, для того щоб записати дані в таблицю, використовується команда 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>";

?>

Отже, ми навчились додавати дані за допомогою web-інтерфейсу. Тепер спробуємо отримати дані, що зберігаються в базі даних СКБД MySQL.

2.5. Відображення даних, що зберігаються в MySQL.

Щоб відобразити якісь дані в браузер за допомогою PHP, потрібно спочатку одержати ці дані у вигляді змінних PHP. При роботі з MySQL без посередника (такого, як PHP) вибірка даних робиться за допомогою команди SELECT мови SQL:

mysql> SELECT * FROM Artifacts;

У попередньому пункті ми бачили, що будь-який запит, у тому числі й на вибірку, можна відправити на сервер за допомогою функції mysql_query(); Там у нас була дещо інша задача - одержати дані з форми й відправити їх за допомогою запиту на вставку в базу даних. Результатом роботи mysql_query() там міг бути лише один з виразів, TRUE або FALSE. Тепер же потрібно відправити запит на вибірку всіх полів, а результат відобразити в браузері. І тут результат - це ціла таблиця значень, а точніше, вказівник на цю таблицю. Отже потрібні якісь аналоги функції mysql_field_name(), тільки щоб вони одержували з результату запиту не ім'я, а значення поля. Таких функцій у PHP декілька. Найбільш популярні - mysql_result() і mysql_fetch_array().

Синтаксис mysql_result:

змішане mysql_result (ресурс result, ціле row [, змішане field])

mysql_result() повертає значення однієї комірки результату запиту. Аргумент field може бути порядковим номером поля в результаті, ім'ям поля або ім'ям поля з ім'ям таблиці через крапку tablename.fieldname. Якщо для імені поля в запиті застосовувався аліас ('select foo as bar from...'), використовуйте його замість реального імені поля.

Працюючи з великими результатами запитів, варто задіяти одну з функцій, що обробляє відразу цілий ряд результатів (наприклад, mysql_fetch_row(), mysql_fetch_array() і т.д.). Тому що ці функції повертають значення декількох комірок відразу, вони НАБАГАТО швидші mysql_result(). Крім того, потрібно врахувати, що вказівка чисельного зсуву (номера поля) працює набагато швидше, ніж вказівка стовпчика або стовпчиків і таблиці через крапку.

Виклики функції mysql_result() не повинні змішуватися з іншими функціями, що працюють з результатом запиту.

Синтаксис mysql_fetch_array:

масив mysql_fetch_array (ресурс result [, ціле result_type])

Ця функція обробляє ряд результатів запиту, повертаючи масив (асоціативний, чисельний або обидва) з обробленим рядом результатів запиту, або FALSE, якщо рядів більше немає.

mysql_fetch_array() - це розширена версія функції mysql_fetch_row(). Крім збереження значень у масиві з чисельними індексами, функція повертає значення в масиві з індексами за назвою стовпчиків.

Якщо декілька стовпчиків у результаті будуть мати однакові назви, буде повернутий останній стовпчик. Щоб одержати доступ до перших, варто використовувати чисельні індекси масиву або аліаси в запиті. У випадку аліасів ви не зможете використовувати дійсні імена стовпчиків, як, наприклад, не зможете використовувати "photo" в описаному нижче прикладі.

select Artifacts.photo as art_image, Persons.photo as pers_image from Artifacts, Persons

Важливо зауважити, що mysql_fetch_array() працює НЕ повільніше, ніж mysql_fetch_row(), і надає більш зручний доступ до даних.

Другий опційний аргумент result_type у функції mysql_fetch_array() є константою й може приймати наступні значення: MYSQL_ASSOC, MYSQL_NUM і MYSQL_BOTH. Ця можливість додана в PHP 3.0.7. Значенням за замовчуванням є: MYSQL_BOTH.

Використовуючи MYSQL_BOTH, одержимо масив, що складається як з асоціативних індексів, так і з чисельних. MYSQL_ASSOC поверне тільки асоціативні відповідності, а MYSQL_NUM - тільки чисельні.

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

Хід виконання роботи

Створити базу даних MySQ за допомогою PHP згідно завдання приведеного нижче (номер завдання вибирається згідно порядкового номеру студента групи). У межах створеної бази даних реалізувати:

· з’єднання з базою даних

· додавання даних у базу даних

· відображення даних у браузері за допомогою мови PHP

· SQL-запити до бази даних і обробку отриманих відповідей





Дата публикования: 2015-01-13; Прочитано: 299 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...