私は準備済みのステートメントでストアドプロシージャを使用して、一連の電子メールアドレスから行を見つけ出しています。ストアドプロシージャを使用した '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'
私のような数値を見つけるためにそれを使用する場合、クエリが動作します。それは英数字の値にerroringされるだろう、なぜ
CALL get_users_by_email('123,456');
任意のアイデア?準備されたステートメントとプロシージャから引き出されるとき、クエリは正常に動作します。
電子メール文字列が人間によって提供される場合、これは大規模なSQLインジェクションの脆弱性です。 – MatBailie
@Dems、警告のおかげで。 – Kit