написание sql запросов - PullRequest
1 голос
/ 06 августа 2009

Я пытаюсь написать SQL-запрос, и у меня возникла проблема. Когда мы хотим написать запрос с предложением where, чтобы сузить наши результаты, мы можем сделать

... где имя = 'Джон'

(где имя - столбец в таблице). Сейчас я пытаюсь вставить такой пункт, кроме как «О'Мэлли». Поэтому я подумал, что запрос будет

... где name = 'О'Мэлли'

но это дает мне исключение нулевого указателя. Кто-нибудь знает, как можно решить эту проблему?

Заранее спасибо за помощь.

Ответы [ 4 ]

3 голосов
/ 06 августа 2009

Ваша проблема в том, что одинарная кавычка в строке "O'Malley" интерпретируется SQL как терминатор строки. Чтобы избежать одиночной кавычки, замените ее на две одинарные кавычки, например:

where name = 'O''Malley'

Редактировать: Если строка "O'Malley" поступила из пользовательского ввода, ваш код уязвим для эксплойта SQL-инъекция . Чтобы избежать этого риска, используйте параметризованный запрос.

2 голосов
/ 06 августа 2009

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

1 голос
/ 06 августа 2009

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

where name = 'O''Malley'
1 голос
/ 06 августа 2009

В зависимости от базы данных вы можете избежать «я думаю. Посмотрите на http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...