Может ли SQL-инъекция быть предотвращена только с помощью addlashes (string)?

Возможный дубликат:
Что делает mysql_real_escape_string (), что делает addlashes ()?

Если нет, я использовал mysql_escape_string и добавляет символы к словам типа \ r \ n, и я не хочу этого.

Нет, это небезопасно. mysql_real_escape_string() этого используйте mysql_real_escape_string() . Он не должен добавлять ничего, кроме того, что требуется, чтобы избежать строки.

http://php.net/mysql-real-escape-string

Это относится и к другим базам данных: используйте функцию escape-функции для расширения.

Нет, addslashes недостаточно хорош. mysql_escape_string не всегда достаточно хорош. Используйте mysql_real_escape_string .

Если вам нравится то, что он добавляет или нет, это не имеет значения, оно только ускользает от символов, чтобы убедиться, что синтаксис запроса действителен. Если это мешает тому, что вы делаете, вы делаете что-то неправильно.

Лучший способ предотвратить SQL-инъекцию – использовать подготовленный оператор с помощью mysqli или PDO .

У вас также есть возможность использовать функции mysqli и подготовленные отчеты. Это во многом устраняет проблему в первую очередь, потому что все цитаты считаются частью данных.