Неизвестный столбец в предложении where с хранимой процедурой - PullRequest
0 голосов
/ 18 января 2012

Я использую хранимую процедуру с подготовленной оценкой для поиска строк из строки адресов электронной почты.

Это выглядит так:

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `get_users_by_email`(IN emailString VARCHAR(100))
BEGIN
    SET @sql = CONCAT('SELECT user_id FROM users WHERE user_email IN  (',emailString,')');
    PREPARE qry FROM @sql;
    EXECUTE qry;
END

Затем я вызываю процедуру, используя:

CALL get_users_by_email('me@email.com,you@email.com, etc..');

Но я получаю эту ошибку:

Unknown column in 'me@email.com' in 'where clause'

Запрос работает, еслиЯ использую его, чтобы найти числовые значения, такие как:

CALL get_users_by_email('123,456');

Есть идеи, почему он будет ошибочно работать с алфавитно-цифровыми значениями?Запрос работает нормально, когда он извлекается из подготовленного оператора и процедуры.

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Вам нужны разделители строк вокруг вашего адреса электронной почты:

SET @sql = CONCAT('SELECT user_id FROM users WHERE user_email IN  (''',emailString,''')');
1 голос
/ 18 января 2012

Если вы используете строку, вам нужно передать ее в кавычках:

SET @sql = CONCAT('SELECT user_id FROM users WHERE user_email IN  (''',emailString,''')');

Я использовал дополнительные кавычки, чтобы сбежать. Числа работают, так как числа не интерпретируются как имена объектов, если они не разделены.

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