Использование подготавливаемых запросов для SQL в php
Primary tabs
Хотелось бы уточнить один момент - когда в SQL - запросах стоит использовать конструкции типа:
$sql = "SELECT name FROM users WHERE name = :name"; $st= $conn->prepare($sql); $st->bindValue( ":name", $login, PDO::PARAM_STR ); $st->execute();
вместо простой:
$sql = "SELECT name FROM users WHERE name = $name"; $st = $conn->query( $sql );
?
Я догадываюсь, что первый вариант надежнее - как я понимаю, во время "привязки" значения производится приведение типа данных? Но бывают же, наверное, ситуации когда мы уверены в правильности введенных данных или нам наоборот, не нужно приводить их к верному если они не совпадают? Или же вторая конструкция в принципе считается устаревшей и использовать её не рекомендуется вообще?
- Log in to post comments
- 5053 reads
melisa
Thu, 06/28/2018 - 12:08
Permalink
вы правы - первый вариант надежнее
вы правы,
prepare() и bindValue() позволяют сделать дополнительную проверку тогда, когда скрипт ничего уже изменять не будет.
Ситуаций, когда может прийти один формат, а может другой, в идеале быть не должно.
Voronve
Thu, 06/28/2018 - 16:44
Permalink
Ахах! )) Шутка про одежду и
Ахах! )) Шутка про одежду и мотоцикл - зачёт! :) Вспомнилась, новость, которую прочитал недавно о том, что в одной из IT компаний программа уволила программиста без ведома начальства ) А пояснение ваше понял, спасибо. Тогда, получается, второй вариант, с простым подставлением переменной при работе с sql лучше вообще не применять?
melisa
Thu, 06/28/2018 - 16:51
Permalink
XD
- самое смешное, что именно в IT))))
да, думаю, что так. методы содержат внутри себя какой-то позитивный функционал (можно, кончено, ознакомиться с ним во избежании увольнений "неугодных")))). а вообще чаще всего, что если уж методы / функции созданы, то с ними лучше, чем без них. недавно разбирала похожую историю с foreach и array_map()
Voronve
Thu, 06/28/2018 - 17:01
Permalink
самое смешное, что именно в
Ну, вполне возможно, её там как раз и разработали ) Что-то типа: "Программа по оптимизации рабочего процесса и кадровой политики" ) Ещё раз спасибо )