Подготовленные записи добавляют значительную часть кода … но я продолжаю слышать упоминания о их использовании … какое значение добавляется путем перехода от 1 строки кода до примерно 6? Это просто для защиты от SQL-инъекции?
Похожие сообщения здесь .
php.net на подготовленные заявления здесь
Подготовленные заявления обеспечивают отличную защиту от SQL-инъекций.
В дополнение к защите SQL-инъекций подготовленные операторы предлагают меньшую нагрузку на сервер базы данных, когда один и тот же запрос выполняется несколько раз, например, в цикле INSERT
. Операция только скомпилируется RDBMS один раз, вместо того, чтобы mysql_query()
каждый раз, как это было бы в mysql_query()
.
Различные API-интерфейсы требуют различного количества кода для выполнения подготовленного оператора. Я считаю, что PDO может быть немного менее подробным, чем MySQLi, если, например, ваша ситуация позволяет использовать неявное связывание параметров внутри вызова execute()
. Это работает, только если все ваши параметры могут быть оценены как строки.
// PDO implicit binding example: // Not many lines of code if the situation allows for it $stmt = $pdo->prepare("SELECT * FROM tbl WHERE col1=? AND col2=? AND col3=?"); $stmt->execute(array($val1, $val2, $val3));
Нечестно сказать, что подготовленные заявления вызывают 1 строку кода, чтобы взорваться до 6. На самом деле, чтобы использовать один, вам нужно всего две строки: одна для подготовки оператора и одна для привязки параметров. Любой другой код, который вы пишете (выполнить запрос, связать результаты, получить результаты и т. Д.), Также потребуется, даже если вы не использовали подготовленные инструкции.
Таким образом, по сути, мы говорим о том, что одна дополнительная строка кода покупает вас. Он покупает вам две вещи:
Точка № 2 может не всегда применяться, но считайте, что точка № 1 также избавляет вас от необходимости вручную вытеснять значения, которые нужно вставить в ваш запрос. Это будет дополнительный код (даже если вы можете сделать это в строке в той же строке), который вам нужно будет написать самостоятельно, если не использовать подготовленные операторы.
Как я вижу, мы можем заключить, что с подготовленными заявлениями вы в конечном итоге получаете безопасность и, возможно, производительность бесплатно .