nl2br
в основном преобразует все "\n"
в "<br/>"
, поэтому я не вижу, как это помогает с SQL инъекцией (не MySQL инъекция кстати)
mysql_real_escape_string
обычно используется для этого видавещей.
htmlentities
используется для предотвращения несчастных случаев, когда пользователи внедряют вредоносные <script>
в ваш сайт, если вы разрешаете ввод данных пользователем.Обратите внимание, что обычно принято хранить строку как есть и вызывать htmlentities
всякий раз, когда вы выводите строку
Вам нужно знать, что делает каждый из вышеперечисленных, и использовать их только тогда, когда вам это нужно, а необъединяйте их, так как они могут разбить вещи еще хуже.
Еще одна лучшая и более безопасная альтернатива для защиты вашей базы данных - это использовать mysqli
http://sg.php.net/mysqli,, она предоставляет подготовленное заявление, которое поможет вам отфильтровать ваш sql