Я делаю это со всеми строками, прежде чем вставлять их:
mysql_real_escape_string($_POST['position']);
Как удалить: \ после их восстановления?
Так что я не получаю: «Пиза»
Кроме того, это достаточно безопасности или я должен сделать что-то еще?
благодаря
используйте stripslashes()
чтобы избавиться от escape-символа.
Побег велик. Если значение будет целочисленным, я бы предложил вам сделать это так:
$value = (int) $_POST['some_int_field'];
Это гарантирует, что вы всегда получите целочисленное значение.
Я бы предложил вам напрямую называть $ _POST ['position'] (не называть mysql_real_escape_string на нем), чтобы получить неэкранированную версию.
Кстати, ваш комментарий о безопасности предполагает немного проблем с пониманием вещей.
Один из способов обработки строк – обработать экранированные версии, что приводит к одной из трудностей, в то время как другая – обрабатывать другие и избегать строк непосредственно перед вложением, что приводит к еще одной трудности. Я предпочитаю последнее.
Это может быть потому, что магические кавычки включены, поэтому, чтобы сделать его универсальным, используйте это:
if (get_magic_quotes_gpc()) { // Check if magic quotes are enabled $position = stripslashes($_POST['position']); } else { $position = mysql_real_escape_string($_POST['position']); }
mysql_real_escape_string () добавляет \ s в ваши строки SQL, но они не должны вносить его в базу данных, поскольку они существуют только для синтаксического анализа строк.
Если вы видите \ s в своей базе данных, то что-то еще ускользает от ваших укусов, прежде чем вы вызовете mysql_real_escape_string (). Убедитесь, что magic_quotes_gpc не включен.