Подготовленные операторы настолько хороши, что как только вы к ним привыкнете, болезненно снова использовать экранирующие функции. Период.
Однако все библиотеки БД, которые я когда-либо использовал (включая oci8 и sqlsrv ...), вводят одну причуду или другую. Поэтому я в основном инкапсулирую любую библиотеку, которую я использую, с простым набором пользовательских классов, которые предоставляют функции в виде I , например:
- Параметры на основе имени:
WHERE foo = :foo
- Параметр передается по значению в ассоциативном массиве (вместо привязки к отдельным переменным PHP):
$params = array('foo' => 33)
- Выполнение в одну строку:
$res = $Db->query($sql, $params);
- Resultsets - это объекты, которые реализуют интерфейс Iterator , поэтому я могу выполнить цикл с
foreach($res as $row)
Принятие такой политики делает точный синтаксис или набор функций менее важным.
Как бы то ни было, хотя это можно сделать практически с любой библиотекой, полезно, если она обеспечивает привязку собственных параметров, поэтому (например) вам не нужно угадывать тип данных. Кроме того, некоторые расширенные функциональные возможности, такие как транзакции, нельзя просто выполнить с помощью простых функций mysql.
PDO мог бы стать хорошей альтернативой, но большинство его драйверов в основном заброшены, так что вы фактически теряете преимущество наличия уровня абстракции, независимого от DB, в то время как вы наслаждаетесь его ловушками.
ИМХО, сам факт того, что вы спрашиваете, говорит о том, что вы должны дать mysqli шанс.