我正在使用一个带有预准备语句的存储过程来从电子邮件地址字符串中查找行。
它看起来是这样的:
分隔符$$
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');
你知道为什么它会在字母数字值上出错吗?当查询从准备好的语句和过程中取出时,它可以正常工作。
发布于 2012-01-18 22:39:25
您的电子邮件地址周围需要字符串分隔符:
SET @sql = CONCAT('SELECT user_id FROM users WHERE user_email IN  (''',emailString,''')');https://stackoverflow.com/questions/8911946
复制相似问题