Выход из одинарной кавычки в PHP при вставке в MySQL [дубликат]

181
задан Peter Mortensen 15 July 2019 в 05:03
поделиться

3 ответа

Вы должны экранировать каждую из этих строк (в обоих фрагментах) с помощью mysql_real_escape_string () .

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

Причина, по которой два ваших запроса ведут себя по-разному, вероятно, связана с тем, что у вас включен magic_quotes_gpc (о чем вы должны знать плохая идея). Это означает, что строки, собранные из $ _GET, $ _POST и $ _COOKIES, экранируются для вас (например, "O'Brien" -> "O \ 'Brien" ).

После сохранения данных и последующего их повторного получения строка, полученная вами из базы данных, будет автоматически экранирована для вас , а не . Вы вернетесь "О'Брайен" . Итак, вам нужно будет передать его через mysql_real_escape_string () .

132
ответ дан 23 November 2019 в 06:10
поделиться

Вы должны сделать что-то подобное, чтобы облегчить отладку.

$sql = "insert into blah values ('$myVar')";
echo $sql;

Вы, вероятно, обнаружите, что одинарная кавычка экранирована обратной косой чертой в рабочем запросе. Это могло быть сделано автоматически с помощью PHP с помощью параметра magic_quotes_gpc, или, может быть, вы сделали это сами в какой-то другой части кода (функции, которые нужно искать, могут быть добавлены и полосами).

См. Magic Quotes

15
ответ дан 23 November 2019 в 06:10
поделиться

У вас есть пара вещей, которые борются за ваши струны.

  • отсутствие правильного цитирования MySQL ( mysql_real_escape_string () )
  • потенциальная автоматическая «волшебная цитата» - проверьте настройку gpc_magic_quotes
  • встроенных строковых переменных, что означает, что вы должны знать, как правильно PHP находит переменные

Также возможно, что значение в одинарных кавычках отсутствует в параметрах первого запроса. В конце концов, ваш пример - это имя собственное, и, похоже, только второй запрос имеет дело с именами.

16
ответ дан 23 November 2019 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: