我正在使用帶有準備好的語句的存儲過程來查找一串電子郵件地址中的行。使用存儲過程的'where子句'中的未知列
它看起來像這樣:
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('[email protected],[email protected], etc..');
不過,我收到此錯誤:
Unknown column in '[email protected]' in 'where clause'
的查詢工作,如果我用它來尋找數值如:
CALL get_users_by_email('123,456');
任何想法,爲什麼它會在字母數字值示數?該查詢在退出預準備語句和過程時正常工作。
如果電子郵件字符串是由人類提供的,這是一個巨大的sql注入漏洞。 – MatBailie 2012-01-18 14:41:22
@Dems,感謝您的警告。 – Kit 2012-01-18 14:48:19