Может кто-то объяснить, в чем разница между использованием mysql_real_escape_string в строке или обертыванием “ вокруг столбца.
Например, "insert into table (``column``) values ('$string')"
или
$escapestring = mysql_real_escape_string($string); "insert into table (column) values ('$escapedstring')"
В чем разница между этими двумя и что я должен использовать? Благодарю.
Есть разница между выступом `и одиночной цитатой '
.
Возврат предназначен для исключения имен таблиц и полей, которые могут противоречить зарезервированным словам MySQL. Если бы у меня было поле с именем date
и запрос типа SELECT date FROM mytable
мне нужно было бы избежать использования date
чтобы, когда MySQL анализирует запрос, он будет интерпретировать мое использование date
как поля, а не date
типа данных .
Единая кавычка '
предназначена для буквенных значений, как в SELECT * FROM mytable WHERE somefield='somevalue'
. Если somevalue
содержит одиночные кавычки, тогда их необходимо экранировать, чтобы предотвратить преждевременное закрытие литерала цитаты.
Эти двое не связаны вообще (насколько я знаю, так или иначе)
Из руководства: http://php.net/manual/en/function.mysql-real-escape-string.php
Вызывает специальные символы в unescaped_string, принимая во внимание текущий набор символов соединения, чтобы можно было разместить его в mysql_query ().
По сути, это то, что он делает, это приведет к тому, что символы, которые небезопасны, войдут в запросы mysql (которые могут сломать или исказить запрос)
Так что o\'reily