Devilz_1
@Devilz_1
Frontend-Developer

MySQL. В чем разница функций?

Всем привет. Я новичок в PHP+SQL (в моём случае MySQL).
Вообщем-то есть механизм добавляющий данные из форм в БД, и в этом механизме я использую функцию mysqli_real_scape_string для всех данных, вводимых пользователем, против возможных sql-инъекций. Но недавно мне подсказали, что профитнее в том же механизме, использовать функцию привязки переменных mysqli_stmt_bind_param. И так, и так код работает, но мне непонятно, какая функция полезнее, может быть какие-то подводные камни есть.

Вопрос сформулировал, как мог. Заранее спасибо за ответы.
  • Вопрос задан
  • 229 просмотров
Пригласить эксперта
Ответы на вопрос 5
metallix
@metallix
Backend - developer
bind_param. А еще лучше - PDO
Ответ написан
Комментировать
@LiguidCool
может быть какие-то подводные камни есть

Есть. Используйте PDO или лучше ORM (Eloquent например).
Ответ написан
Комментировать
@402d
начинал с бейсика на УКНЦ в 1988
Разобраться полезно, а в реальной работе использовать существующие подходы к работе с базой на более высоком
уровне. Выбери себе фреймворк по вкусу или готовые классы.
И будет приблизительно так.
$data_model->insert($new_record);
Ответ написан
Комментировать
pezdatskiy
@pezdatskiy
Предприниматель, по выходным- программист
Есть классная библиотека SafeMySql, юзаю её в проекте уже года три. Намного меньше заморочек и с безопасностью все ок.
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Разница очень простая.

Функция mysqli_real_scape_string не предназначена для защиты против возможных sql-инъекций. И применять ее в таком качестве - прямой путь заполучить инъекцию.
В то время как одно из назначений функции mysqli_stmt_bind_param - это предотвращение sql-инъекций, поэтому применять её для этой цели можно и нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы