Latest web development tutorials
×

PHP курс

PHP курс PHP Краткое введение PHP устанавливать PHP грамматика PHP переменная PHP echo/print PHP Типы данных PHP постоянная PHP строка PHP операторы PHP If...Else PHP Switch PHP массив PHP Сортировка массива PHP Суперглобальные PHP While циркуляция PHP For циркуляция PHP функция PHP Магические Переменные PHP Пространства имен PHP Объектно-ориентированный

PHP форма

PHP форма PHP Аутентификация с помощью форм PHP форма - Обязательные для заполнения поля PHP форма - Проверка электронной почты и URL PHP Полный экземпляр формы PHP $_GET переменная PHP $_POST переменная

PHP Расширенный учебник

PHP Многомерные Массивы PHP дата PHP содержать PHP файл PHP Загрузка файлов PHP Cookie PHP Session PHP E-mail PHP безопасности E-mail PHP Error PHP Exception PHP фильтр PHP Расширенный фильтр PHP JSON

PHP 7 Новые возможности

PHP 7 Новые возможности

PHP база данных

PHP MySQL Краткое введение PHP MySQL подключение PHP MySQL Создание базы данных PHP MySQL Создание таблицы данных PHP MySQL Вставка данных PHP MySQL Вставка нескольких данных PHP MySQL Подготовленные выражения PHP MySQL Считывание данных PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX Краткое введение AJAX PHP AJAX база данных AJAX XML AJAX Поиск в реальном времени AJAX RSS Reader AJAX голосование

PHP справочное руководство

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP обработка изображений PHP RESTful

PHP MySQL подготовленных операторов

Подготовленные заявления, чтобы предотвратить MySQL инъекции очень полезен.


Подготовленные заявления и связанные параметры

Подготовленные заявления для выполнения множества того же оператора SQL, а также более эффективно выполнять.

Работы подготовленных заявлений следующим образом:

  1. Предварительная обработка: Создать шаблон SQL заявление отправляется в базу данных. Значение параметра зарезервировано "?" Марк. Например:

    INSERT 
    	INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
  2. Анализ базы данных, компиляции, выполнения SQL оптимизации запросов утверждения шаблона, и сохраняет результат не выводится.

  3. Исполнение: Наконец, значения параметров передаются приложению связывания ( "?") Знак, база данных выполняет инструкции. Приложения могут быть выполнены во много раз, если значение параметра не то же самое.

По сравнению с прямым выполнением операторов SQL, подготовленный оператор имеет два основных преимущества:

  • Подготовленные заявления значительно сокращает время проведения анализа, только запрос (хотя инструкции выполняются).

  • Связанные параметры, чтобы уменьшить пропускную способность сервера, вам нужно всего лишь отправить запрос параметра вместо всего заявления.

  • Подготовленные заявления, направленные против инъекции SQL является очень полезным, потому что после того, как использовать различные протоколы для передачи значений параметров, чтобы обеспечить законность данных.


MySQLi подготовлены заявления

В следующем примере используется MySQLi в подготовленном заявлении, и связать соответствующие параметры:

Примеры (MySQLi с использованием подготовленных операторов)

<? Php
$ Servername = "локальный";
$ Имя пользователя = "Имя пользователя";
$ Password = "пароль";
$ DBNAME = "MyDB";

// Создать соединение
$ Conn = новый MySQLi ($ ServerName, $ имя пользователя, пароль $, $ имя_бд);

// Проверка соединения
если ($ conn-> connect_error) {
умереть ( "Не удалось установить соединение:" $ conn-> connect_error.);
}

// Предварительная обработка и связывание
$ Stmt = $ conn-> подготовка ( "INSERT INTO MyGuests (Firstname, Lastname, электронная почта) ЗНАЧЕНИЯ (,,) ???");
$ Stmt-> bind_param ( "SSS", $ Firstname, $ Lastname, $ электронная почта);

// Установить параметры и выполнить
$ Firstname = "Джон";
$ Lastname = "Doe";
$ Email = "[email protected]";
$ Stmt-> Execute ();

$ Firstname = "Мария";
$ Lastname = "Моу";
$ Email = "[email protected]";
$ Stmt-> Execute ();

$ Firstname = "Джули";
$ Lastname = "Дули";
$ Email = "[email protected]";
$ Stmt-> Execute ();

Эхо "Новая запись вставляется успешно";

$ Stmt-> близко ();
$ Conn-> близко ();
?>

Разбор каждой строки кода в следующих примерах:

"INSERT INTO MyGuests (Firstname, Lastname, электронная почта) VALUES (?,?,?)"

В SQL отчетности, мы используем знак вопроса (?), Здесь мы можем заменить знак вопроса целое число, строка, двойной точности с плавающей точкой и логические значения.

Далее, давайте посмотрим на bind_param () функции:

$ Stmt-> bind_param ( "SSS", $ Firstname, $ Lastname, $ электронная почта);

Параметры функции связывания SQL, и скажите значение параметра базы данных. типы данных параметров обработки столбца "для" Sss остальных параметров. s характер сообщает базе данных, что строка параметра.

Есть четыре типа параметров:

  • я - целое число (целое число)
  • d - двойной (двойной точности с плавающей точкой)
  • s - строка (строка)
  • б - BLOB (большой двоичный объект: двоичные большие объекты)

Каждый параметр необходим для указания типа.

Параметр типа данных указывает базу данных, вы можете снизить риск SQL инъекций.

примечание Примечание: Если вы хотите , чтобы вставить дополнительные данные (вводимые пользователем), проверка данных очень важна.


PDO подготовлены заявления в

Следующие примеры, которые мы используем подготовленные заявления в ПДО и обязательных параметров:

Примеры (PDO с использованием подготовленных операторов)

<? Php
$ Servername = "локальный";
$ Имя пользователя = "Имя пользователя";
$ Password = "пароль";
$ DBNAME = "myDBPDO";

попробуйте {
$ Conn = новый PDO ( "MySQL: хост = $ имя_сервера; имя_бд = $ имя_бд", $ имя пользователя, пароль $);
// Установить режим исключения ошибки PDO
$ Conn-> SetAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);

// Параметры связывания предварительной обработки и SQL
$ Stmt = $ conn-> подготовить ( "INSERT INTO MyGuests (Firstname, Lastname, электронная почта)
ЗНАЧЕНИЯ (: Firstname ,: Lastname ,: электронная почта) ");
$ Stmt-> bindParam ( ': Firstname', $ Firstname);
$ Stmt-> bindParam ( ': Lastname', $ Lastname);
$ Stmt-> bindParam ( ': электронная почта', $ электронная почта);

// Вставить строку
$ Firstname = "Джон";
$ Lastname = "Doe";
$ Email = "[email protected]";
$ Stmt-> Execute ();

// Вставьте другую строку
$ Firstname = "Мария";
$ Lastname = "Моу";
$ Email = "[email protected]";
$ Stmt-> Execute ();

// Вставьте другую строку
$ Firstname = "Джули";
$ Lastname = "Дули";
$ Email = "[email protected]";
$ Stmt-> Execute ();

Эхо "Новая запись вставляется успешно";
}
поймать (PDOException $ е)
{
.. Эхо $ SQL "<br>" $ e-> GetMessage ();
}
$ Conn = NULL;
?>