Работа PHP с MySQL
349.50K
Категория: ПрограммированиеПрограммирование

Работа PHP с MySQL

1. Работа PHP с MySQL


Сценарий подключения к MySQL
Функции для работы с базами данных
Вывод результата SQL-запроса
Разделение кода сценария

2.

PHP-сценарий для подключения к MySQL
Последовательность действий при работе с базами
данных:
1. Подключение к базе данных MySQL.
2. Отправка SQL-запроса в базу данных.
3. Получение результатов.
4. Обработка результатов.

3.

PHP-сценарий для подключения к MySQL
mysqli_connect(host, user, psw, db) – подключение к БД MySQL
mysqli_ping(connect) – проверка подключения к БД
<?php
$dbc = mysqli_connect("localhost", "sa", "qwerty", "my_db")
or die("Ошибка подключения к базе данных: ".mysqli_error() ");
if(mysqli_ping($dbc))
{
echo "Вы успешно подключились к базе данных";
mysqli_set_charset($dbc, 'utf-8');

}

4.

Вывод результата SQL-запроса
mysqli_set_charset($dbc, 'utf-8') – установка кодировки
mysqli_error($dbc) – оповещение об ошибке
die() – завершение работы сценария
mysqli_ping($dbc) – проверка подключения к БД
mysqli_close($dbc) – закрытие подключения к БД
mysqli_query($dbc, $sql) – выполнение SQL-запроса
mysqli_num_rows($result_sql) – число строк таблицы
mysqli_fetch_array($result_sql, MYSQLI_ASSOC) –
извлечение строк из таблицы

5.

Вывод результата SQL-запроса
Функции mysqli_fetch_row передается ресурс, возвращенный
функцией mysqli_query.
mysqli_fetch_row позволяет выполнить последовательный
перебор строк результата SQL-запроса.
Основная схема вывода результата запроса:
1. Напишите свой SQL-запрос и сохраните его в строке или
переменной.
2. Передайте свой запрос в mysqli_query и получите PHPресурс.
3. Передайте этот ресурс в mysqli_fetch_row, чтобы получить в
ответ результат в построчном виде.
4. Организуйте циклический перебор этих строк и извлеките
нужную вам информацию.

6.

Вывод результата SQL-запроса
<?php
$command = 'SELECT * FROM TABLE WHERE name="Сидоров";';
$dbc = mysqli_connect(……) or die("");
$result = mysqli_query($dbc, $command);
if (!$result) {
die("<p>Ошибка вывода: " . mysqli_error() . "</p>");
}
echo "<ul>";
while ($row = mysqli_fetch_row($result)) {
echo "<li> " . $row[0] . "</li>";
}
echo "</ul>";
mysqli_close($dbc);
?>

7.

Безопасность работы с БД
1. Разграничить права пользователей при работе
с БД.
2. Проверять вводимые данные на корректность
(валидация).
3. Исключить возможность изменения текста
запроса.
4. Удалить вывод об ошибках после отладки.
5. Установить необходимую длину вводимых
значений.

8.

Лабораторная работа 11
Проект forum.ru:
1. Создайте в phpMyAdmin базу данных my_forum (слайд9).
2. Страница const.php (слайд10) – хранит константы –
данные для подключения к базе данных my_forum.
3. Страница connect.php (слайд10) – хранит переменную
$connect – подключение к базе данных.
4. Страница message.php (слайд11) – отображает все
сообщения посетителей форума.
5. Создайте страницу index.php для авторизации и
регистрации пользователя форума. После успешной
авторизации пользователь попадает на страницу
index.php.
6. Создайте страницу send_msg.php, где авторизованный
пользователь может создавать сообщения и сохранять их
в базу данных.

9.

База данных проекта forum
1. В OpenServer откройте меню Дополнительно и выберите
phpMyAdmin:
2. Создайте базу данных my_forum и таблицы: message и
user:

10.

Проект forum.ru
const.php:
<?php
//создаем именованные константы
define("host", "localhost");
define("user", "root");
define("psw", "root");
define("database", "my_forum");
connect.php:
<?php
require_once "const.php"; //подключаем сценарий const.php
$connect = new mysqli(host, user, psw, database)
or die("Ошибка подключения" . mysqli_connect_error());

11.

Проект forum.ru
message.php:
<?php
require_once("connect.php");
if(!mysqli_ping($connect)) die("Ошибка соединения с базой данных");
$command = "select * from message"; //выводим все сообщения форума
$query = mysqli_query($connect, $command);
if($query) {
echo "<table>";
while($row = mysqli_fetch_array($query)) {
echo "<h3>" . $row['title'] . "</h3>";
echo $row['msg'];
}
echo "</table>";
}
else echo "Ошибка выполнения запроса";
mysqli_close($connect);

12.

Проект forum.ru
English     Русский Правила