Помимо повторного использования запроса, основной причиной *1002* использования подготовленных операторов в PDO является использование привязки заполнителя.
$query = self::$DB->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$query->execute($bindvars);
В этом коде заполнители вопросительных знаков (или :named
), присутствующие в переменной $sql
, заменены на значения в массиве $bindvars
. Эта замена гарантирует, что переменные правильно заключены в кавычки и экранированы, что значительно усложняет выполнение SQL-инъекции .
При подготовке / выполнении могут быть небольшие издержки, но эти небольшие накладные расходы равны ничто , учитывая риск внедрения SQL. Единственный другой вариант - это объединение вместе строки SQL, и это может быть огромным риском для безопасности, если это не будет сделано идеально каждый раз .
Предыдущий разработчик знал, что он или она делал, по крайней мере, в этом конкретном случае, и вы не должны отменять работу, которую он или она выполняли здесь. Наоборот, вы должны продолжать использовать подготовленные операторы во всем своем будущем коде.
(С другой стороны, я не могу поручиться за производительность курсора MySQL ...)