MySQL 5.0中在MySQL中如何將整數列表傳遞給存儲過程中的預處理語句?
CREATE TABLE `locationcodes` (
`id` int,
`customer` varchar(100),
`locationcode` varchar(50),
`parentid` int
);
insert into locationcodes values (1, 'Test, Inc.', 'California', NULL);
insert into locationcodes values (2, 'Test, Inc.', 'Los Angeles', 1);
insert into locationcodes values (3, 'Test, Inc.', 'San Francisco', 1);
insert into locationcodes values (4, 'Test, Inc.', 'Sacramento', 1);
存儲過程:
CREATE PROCEDURE test (_location VARCHAR(100))
BEGIN
SET @location = _location;
SET @select='
SELECT id, locationcode
FROM locationcodes
WHERE customer="Test, Inc."
AND id in (?)
';
PREPARE stmt FROM @select;
EXECUTE stmt USING @location;
DEALLOCATE PREPARE stmt;
END
通話過程:
call test('2, 3')
結果:
2, Los Angeles
結果是隻有一行,但我WOU ld像兩行。挑戰是準備好的聲明看到參數是一個varchar,並相應地引用了該值。我寧願沒有引號,以便我可以創建一個IN語句,那該怎麼做?理想情況下,MySQL將有一個ints數據類型的列表,所以我不必使用varchar,但不存在。
我需要保留準備好的語句以防止SQL注入攻擊。