Как получить «экранированные» строки из db?

Я делаю это со всеми строками, прежде чем вставлять их:

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 не включен.