Similar presentations:
СУБД MySQL PHP. Лекція №7
1. СУБД MySQL
PHP2. СУБД MySQL
Одна з популярних СУБД, щовикористовуються в Webпрограмуванні
3. Що таке MySQL
MySQL - компактний багатопотічний сервер баз даних.MySQL характеризується великою швидкістю, стабільністю
та легкістю у використанні.
MySQL був розроблений компанією ТсХ для внутрішніх
потреб, що полягали у швидкій обробці дуже великих баз
даних.
Компанія стверджує, що використовує MySQL з 1996
року на сервері з більш ніж 40 БД, що містять 10,000
таблиць, з яких більш ніж 500 мають більш 7 мільйонів
рядків.
4. Можливості MySQL.
Короткий перелік можливостей MySQL.1. Підтримується необмежена кількість користувачів, що
одночасно працюють з базою даних.
2. Кількість рядків у таблицях може досягати 50 млн!
3. Швидке виконання команд. Можливо MySQL
найшвидший сервер з існуючих.
4. Проста та ефективна система безпеки.
5. Типи полів
СтрокиVARCHAR(n) – від 1 до 255
символів
TINYTEXT
TEXT – не більш 65535
символів
MEDIUMTEXT
LONGTEXT
Дата і час
DATE - дата в форматі
YYYY-MM-DD
TIME - час в форматі HH:
MM: SS
DATETIME - дата і час в
форматі YYYY-MM-DD HH:
MM: SS
TIMESTAMP - дата і час в
форматі timestamp, при
отриманні значення поля
воно відбивається не в
форматі timestamp, а у
вигляді YYYY-MM-DD HH:
MM: SS
6. Модифікатори
До типу можна приєднувати модифікатори, які задаютьповедінку типу та операції, які дозволено / заборонено
виконувати з відповідними стовпцями
not null - поле не може містити невизначене значення,
поле обов'язково має бути ініціалізовано при вставці
нового запису в таблицю
primary key - поле є первинним ключем
auto_increment - при вставці нового запису поле
отримає унікальне значення…
7. phpMyAdmin
Система адміністрування, цілком написана наPHP
Дозволяє
Створювати та видаляти бази даних
Створювати та видаляти таблиці баз даних
Переглядати і редагувати бази даних і їх таблиці
Змінювати структуру таблиць
переглядати статистику
8. phpMyAdmin
9. Алгоритм роботи з БД в РНР
1.2.
3.
4.
5.
Встановлюємо з'єднання з сервером
Вибираємо потрібну базу даних
Робимо запит до сервера баз даних
(sql запит)
Обробляємо результат запиту, якщо
це необхідно
Закриваємо з'єднання
(відключаємося від сервера БД)
10. Мінімум потрібних функцій
mysql_connect();mysql_select_db();
mysql_query();
mysql_fetch_array();
mysql_close();
11. Функції для роботи з MySQL
mysql_connect(string hostname, stringusername, string password)
встановлює з’єднання з MySQLсервером
mysql_connect("localhost", "root", "");
12. Функції для роботи з MySQL
mysql_close ()закриває з’єднання з MySQL-сервером
mysql_close();
13. Функції для роботи з MySQL
mysql_select_db(string dbname)вибирає базу даних
mysql_select_db("test");
mysql_query(string query)
формування і відправка SQL-запита
14. Приклад роботи з БД
<?php// Дані для mysql серверу
$dbhost = "localhost"; // Хост
$dbuser = "guest"; // І’мя користувача
$dbpassword = "mypassword"; // Пароль
$dbname = "database"; // І’мя бази даних
// Підключаємося до mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
// Вибираємо нашу базу даних
mysql_select_db($dbname, $link);
// Створюємо таблицю customer // тобто робимо sql запит
$query = "create table customer (id int(2) primary key
auto_increment, name varchar(100), tel varchar(20))";
mysql_query($query, $link);
// Закриваємо підключення
mysql_close($link)
?>
15. Приклад: Що буде?
<?$id=mysql_connect("localhost","root","");
mysql_query("create database `phonebase`");
mysql_select_db(" phonebase ");
mysql_query("CREATE TABLE `phone` (`name`
TEXT NOT NULL ,`email` VARCHAR( 20 ) NOT NULL
,`number` VARCHAR( 9 ) NOT NULL ,`id` INT NOT
NULL AUTO_INCREMENT, PRIMARY KEY ( `id` ) );");
?>
16. Розміщення БД
В каталозі data при створенні новоїБД створюється каталог з такою ж
назвою
17. Розміщення БД
Кожна таблиця розміщується в трьохфайлах
table.frm - містить структуру самої таблиці
table.myd - зберігаються фактичні дані
table.myi - зберігаються дані про ключі та інші
службові дані, необхідні MySQL для швидкого
пошуку даних в файлі table.myd
18. Розміщення БД
19. Додавання записів
<?$id=mysql_connect("localhost","root","");
if ($id==0)
die("Не можу підключитися до MySQL<br>");
else
echo «Підключення з MySQL встановлено<br>";
mysql_select_db("phonebase");
mysql_query("INSERT INTO `phone` ( `name` , `email` ,
`number` , `id` ) VALUES (‘Іванов', '[email protected]',
'123456789', 'null');");
mysql_query("INSERT INTO `phone` ( `name` , `email` ,
`number` , `id` ) VALUES ('Петров', '[email protected]',
'987654321', 'null');");
mysql_query("INSERT INTO `phone` ( `name` , `email` ,
`number` , `id` ) VALUES ('Михайленко',
'[email protected]', '192837465', 'null');");
?>
20. Функції обробки результатів запиту
Якщо запит, виконаний за допомогою функціїmysql_query() успішно виконався, то в результаті
клієнт отримає набір записів, який може бути
оброблений наступними функціями PHP:
mysql_result() - отримати необхідний елемент з
набору записів;
mysql_fetch_array() - занести запис в масив;
mysql_fetch_row() - занести запис в масив;
mysql_fetch_assoc() - занести запис в
асоціативний масив;
mysql_fetch_object() - занести запис в об'єкт.
21. Отримання даних
mysql_fetch_array(int $result)вибирає результуючий рядок як
асоціативний масив, дані
зберігаються як в асоціативному, так і
в індексному масивах
22. Отримання даних
mysql_fetch_assoc(int $result)mysql_fetch_row(int $result)
вибирають результуючий рядок в
асоціативний масив, дані
зберігаються в асоціативному /
індексному масиві
23. Отримання даних
mysql_num_rows(int $result)mysql_num_fields(int $result)
повертають число рядків (полів) в
результуючому рядку
24. Отримання даних
<?$id=mysql_connect("localhost","root","");
if ($id==0)
die("Не можу підключитися до MySQL<br>");
mysql_select_db("phonebase");
$result=mysql_query("select * from phone");
for($i=0;$i<mysql_numrows($result);$i++)
{
$arr=mysql_fetch_array($result);
foreach ($arr as $k=>$v)
echo '$arr[',$k,"]=",$v,"<br>";
}
?>
25. Отримання даних
<?$id=mysql_connect("localhost","root","");
if ($id==0)
die("Не можу підключитися до MySQL<br >");
mysql_select_db("phonebase");
$result=mysql_query("select * from phone");
for($i=0;$i<mysql_numrows($result);$i++)
{
$arr=mysql_fetch_assoc($result);
foreach ($arr as $k=>$v)
echo '$arr[',$k,"]=",$v,"<br>";
}
?>
26. Отримання даних
<?$id=mysql_connect("localhost","root","");
if ($id==0)
die("Не можу підключитися до MySQL<br >");
mysql_select_db("phonebase");
$result=mysql_query("select * from phone");
for($i=0;$i<mysql_numrows($result);$i++)
{
$arr=mysql_fetch_row($result);
foreach ($arr as $k=>$v)
echo '$arr[',$k,"]=",$v,"<br>";
}
?>
27. Отримання даних
<?$id=mysql_connect("localhost","root","");
if ($id==0)
die("Не можу підключитися до MySQL>");
mysql_select_db("phonebase");
$result=mysql_query("select * from phone");
while
(list($name,$email,$number,$id)=mysql_fetch_row($
result))
{
echo '$name=',$name,"<br>";
echo '$email=',$email,"<br>";
echo '$number=',$number,"<br>";
echo '$id=',$id,"<br>";
}
?>
28. Отримання даних
<html><table border=1>
<tr>
<th>ПІБ</th>
<th>E-mail</th>
<th>Номер</th>
</tr>
<?
$id=mysql_connect("localhost","root","");
if ($id==0)
die("Не можу підключитися до MySQL>");
mysql_select_db("phonebase");
29. Отримання даних
$result=mysql_query("select * from phone");while
(list($name,$email,$number,$id)=mysql_fetch_row($
result))
echo ("<tr><td><a
href=\mysql\mysql_info.php?id=$id&name=$name>
$name</a></td><td>$email</td><td>$number</t
d></tr>");
?>
</table>
</html>
30. Додавання даних
<formaction=http://localhost/mysql/mysql_insert_t
able.php>
<p>Имя:<input type=text name=name>
<p>E-mail:<input type=text name=email>
<p>Номер:<input type=text
name=number>
<p><input type=submit>
</form>
31. Додавання даних
<?$id=mysql_connect("localhost","root","");
if ($id==0) die("Не могу підключитися до MySQL");
mysql_select_db("phonebase");
mysql_query("insert into phone
(name,email,number,id)
values('$_REQUEST[name]','$_REQUEST[email]','$_R
EQUEST[number]','null');");
?>
В таблицу додано:<br>
ПІБ: <?echo $_REQUEST[name]?><br>
E-mail: <?echo $_REQUEST[email]?><br>
Номер: <?echo $_REQUEST[number]?><br>
32. Завантаження/вивантаження даних
За замовчуванням MySQL повертає всірезультати користувачеві, який зробив
запит
Але можливо і перенаправлення
результатів запиту в файл
Для цього використовується специфікатор
INTO OUTFILE filename
FIELDS TERMINATED BY 'c' визначає
символ, який використовується для поділу
полів
33. Завантаження/вивантаження даних
Для читання текстового файлу і вставки даних втаблицю використовується оператор LOAD
LOAD DATA [LOCAL] INFILE file INTO TABLE ...
Передбачається, що зазначений файл знаходиться
на сервері
Якщо шлях до файлу не вказано, то
передбачається, що він знаходиться в тому ж
каталозі, що і база даних
Специфікатор LOCAL задає розташування файлу
на клієнтській машині
34. Завантаження/вивантаження даних
<?php$id=mysql_connect("localhost","root","");
if ($id==0) die("Не могу підключитися до MySQL<br>");
mysql_query("create database `out`");
mysql_select_db("out");
mysql_query("CREATE TABLE `info` (`a` TEXT NOT NULL ,`b`
INT NOT NULL ,`c` TIMESTAMP);");
mysql_query("insert into info values('one',1,null)");
mysql_query("insert into info values('two',2,null)");
mysql_query("insert into info values('three',3,null)");
$result=mysql_db_query("out","select * from info");
while ($arr=mysql_fetch_assoc($result))
foreach ($arr as $k=>$v)
echo '$arr[',$k,"]=",$v,"<br>";
?>
35. Завантаження/вивантаження даних
36. Завантаження/вивантаження даних
<?$id=mysql_connect("localhost","root","");
if ($id==0) die("Не могу підключитися до
MySQL");
mysql_select_db("out");
mysql_query("select * from info into outfile
'z:/out.txt' fields terminated by '#'");
?>
37. Завантаження/вивантаження даних
<?$id=mysql_connect("localhost","root","");
if ($id==0) die("Не могу підключитися до MySQL");
mysql_select_db("out");
mysql_query("load data local infile 'z:/out.txt' into
table info fields terminated by '#'");
mysql_query("select * from info");
$result=mysql_db_query("out","select * from info");
while ($arr=mysql_fetch_assoc($result))
foreach ($arr as $k=>$v)
echo '$arr[',$k,"]=",$v,"<br>";
?>