Подготовленные заявления MySQL

Мне просто интересно было ли, что я мог бы использовать некоторые формы подготовленных операторов в MySQL, поэтому мне не пришлось бы скрывать все мои входы, и мне не пришлось бы переключать все мои файлы с MySQL на MySQLi. Я действительно не доверяю функциям экранирования, поэтому, если есть какие-то альтернативы, которые работают в обычном MySQL, было бы здорово.

Solutions Collecting From Web of "Подготовленные заявления MySQL"

Используйте PDO (объекты данных PHP) для подключения к базе данных MySQL. Этот метод гарантирует, что все входные данные базы данных будут всегда обрабатываться как текстовые строки, и вам никогда не придется выполнять ручное экранирование.

Это в сочетании с надлежащим использованием html_entities () для отображения данных из вашей базы данных является прочным и хорошим способом защиты вашей страницы от инъекций. Я всегда использую PDO для обработки всех моих подключений к базе данных в своих проектах.

Создайте объект базы данных (и в этом случае применяйте определенную кодировку символов):

try { $db = new PDO("mysql:host=[hostname];dbname=[database]",'[username]','[password]'); $db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8"); $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $db->exec('SET NAMES utf8'); } catch (PDOException $e) { echo $e->getMessage(); } 

Затем используйте его так:

 $id = 1; $q = $db->prepare('SELECT * FROM Table WHERE id = ?'); $q->execute(array($id)); $row = $q->fetch(); echo $row['Column_1']; 

или

 $q = $db->prepare('UPDATE Table SET Column_1 = ?, Column_2 = ? WHERE id = ?'); $q->execute(array('Value for Column_1','Value for Column_2',$id)); 

и с подстановочными знаками:

 $search = 'John'; $q = $db->prepare('SELECT * FROM Table WHERE Column_1 LIKE ?'); $q->execute(array('%'.$search.'%')); $num = $q->rowCount(); if ($num > 0) { while ($row = $q->fetch()) { echo $row['Column_1']; } } else { echo "No hits!"; } 

Прочитайте больше:

Как я могу предотвратить SQL-инъекцию в PHP?

Когда * не * использовать подготовленные заявления?

насколько безопасны подготовленные заявления PDO

http://php.net/manual/en/book.pdo.php

Если вы не хотите иметь дело с тем, чтобы ускользнуть от своего ввода, вы всегда можете сопоставить его так, как он есть, а затем отправить ваши предварительно написанные заявления. Это действительно будет стоить усилий, если у вас есть относительно немного возможных операторов для выполнения.