Добавление апострофов в запросы - PullRequest
1 голос
/ 25 ноября 2010

У меня есть запрос, который получает текст из текстового поля и вводит его в базу данных.

Он работает нормально, если значение равно Taylor, но выдает ошибки, когда оно O'Neill, поскольку апострофсинтаксическая ошибка unclosed quotation mark

Есть ли способ добавить O'Neill в базу данных с апострофом, который все еще там?хочу, чтобы он был помещен в базу данных, как показано.

Спасибо

Ответы [ 4 ]

2 голосов
/ 25 ноября 2010

Возможно, вы захотите взглянуть на Шаг 4. Используйте параметры команды для запросов SQL в в этом документе по шаблонам и практикам Microsoft .Это не только решит ваши проблемы с цитированием, но также предотвратит атаки с использованием SQL-инъекций и другие Very Bad Things ™ .

2 голосов
/ 25 ноября 2010

Если вы используете двойные одинарные кавычки , вы не получите двойные одинарные кавычки в своей базе данных.Вы получите только одну одинарную кавычку .

двойные одинарные кавычки - это просто способ ESCAPE a одинарные кавычки в предложении SQL.Итак, когда вы делаете:

> insert into your_table (name) values ('O''neil');

Значение O'neil будет фактически вставлено в базу данных.

Если ваша база данных PostgreSQL , есть другиеспособы манипулирования строками.Например, использование $$:

> insert into your_table (name) values ($$O'neil$$);

Вставит O'neil в базу данных.

1 голос
/ 25 ноября 2010

Вы можете отправить свой SQL-запрос с двойным '', отлично, база данных распознает escape-символ и сохраняет только один.

Почему вы не хотите использовать решение с двойными одинарными кавычками?

1 голос
/ 25 ноября 2010

Апостроф можно избежать, удвоив его ('') - будет вставлен один апостроф.

Таким образом, при вставке O''Neill в базу данных будет вставлено O'Neill.

Однако тот факт, что вам нужно сделать это, предполагает, что вы используете встроенный SQL, открытый для Атаки SQL-инъекций .

Если вы используете параметризованные запросы вы не будете столь уязвимы, и вам не придется прибегать к спасению от апострофов.

...