Корпоративный сайт
Портал для компании!
Интернет-магазин
Современный и быстрый сайт!
Социальная сеть
Уникальные решения!
Персональный сайт
Для вашего бизнеса!
ВЕБ
Полный стек веб-разработки...
НАШИ РЕШЕНИЯ PHP PDO MySQL
Объекты данных PHP (PDO).
Применение расширения PDO... Пример кода
PHP PDO это специализированный, универсальный класс реализующий интерфейс доступа к базам данных. Он обеспечивает взаимодействие с базами данных при помощи объектов и позволяет подключаться к множеству их различных типов (MySQL, PostgreSQL, SQLite, Oracle, Microsoft SQL Server и другие)...
Всегда следует помнить об обеспечении безопасности вашего приложения, в частности о защите от SQL-инъекций. Применение подготовленных запросов PDO к базе данных MySQL обеспечивает такую защиту! Это единственный безопасный способ выполнения SQL-запросов с использованием переменных!
Db.php (Класс Db - компонент для работы с базой данных)
class Db
{
/**
* Устанавливает соединение с базой данных
* @return Объект класса PDO для работы с БД
*/
public static function getConnection()
{
// Получаем параметры подключения из файла
$paramsPath = ROOT . '/config/db_params.php';
$params = include($paramsPath);
// Устанавливаем соединение
$dsn = "mysql:host={$params['host']};dbname={$params['dbname']}";
$db = new PDO($dsn, $params['user'], $params['password']);
// Задаем кодировку
$db->exec("set names utf8");
return $db;
}
}
db_params.php (Массив с параметрами подключения к базе данных)
return array(
'host' => 'YourHost',
'dbname' => 'YourDbName',
'user' => 'YourUserName',
'password' => 'YourPassword',
);
Пример подготовленного запроса к БД в модели User.php
/**
* Класс User - пример модели для работы с пользователями
*/
class User
{
/**
* Регистрация пользователя
* @param array $options (Массив с информацией о пользователе)
* @return integer (id добавленной в таблицу user записи)
*/
public static function register($options)
{
$name = $options['name'];
$email = $options['email'];
$password = $options['password'];
/* !!! Все входящие данные должны быть очищены, чтобы устранить уязвимость XSS (межсайтовый скриптинг) !!!
* $name = strip_tags($options['name']);
* $name = htmlentities($options['name'], ENT_QUOTES, "UTF-8");
* $name = htmlspecialchars($options['name'], ENT_QUOTES);
* !!! Пароль($password) должен быть зашифрован надежным алгоритмом шифрования !!!
*/
// Соединение с БД
$db = Db::getConnection();
// Текст запроса к БД
$sql = 'INSERT INTO user (name, email, password)'
. 'VALUES (:name, :email, :password)';
// Получение и возврат результатов. Используется подготовленный запрос.
$result = $db->prepare($sql);
$result->bindParam(':name', $name, PDO::PARAM_STR);
$result->bindParam(':email', $email, PDO::PARAM_STR);
$result->bindParam(':password', $password, PDO::PARAM_STR);
if ($result->execute()) {
// Если запрос выполнен успешно, возвращаем id добавленной в таблицу записи.
return $db->lastInsertId();
}
// Иначе возвращаем 0
return 0;
}
}
Здесь представлен пример универсального класса PHP PDO и реализация интерфейса доступа к базам данных...
Обязательно применяйте методику разработки программного обеспечения, предотвращающую внедрение уязвимостей, обеспечивающую устойчивость к воздействию вредоносных программ и несанкционированному доступу!