我正在更新旧的PHP脚本以使用PDO,我在复制原始行为时遇到了麻烦。
这个问题似乎与IN比较的一个简洁的小功能有关,不能用于字符串。
鉴于此表:
CREATE TABLE `my_categories` (
`name` VARCHAR(255) NULL,
`categories` VARCHAR(255) NULL);
INSERT INTO my_categories (name, categories) VALUES
('Joe', '575'),
('Bob', '576'),
('Jim', '577'),
('Daisy','576,577'),
('Billy','576,597');
我可以使用以下SQL来根据需要匹配所有行:
SELECT * as test FROM my_categories WHERE categories IN (575,576,577)
name categories
Joe 575
Bob 576
Jim 577
Daisy 576,577
Billy 576,597
但是,只要稍加修改,Daisy和Billy就会从结果中删除:
SELECT * as test FROM my_categories WHERE categories IN ('575','576','577')
Joe 575
Bob 576
Jim 577
我的问题是我无法使用PDO中的预准备语句在第一个测试中复制结果。
为什么行为不同,如何从准备好的语句中获取该功能,是否有更好的方法来比较“哑”逗号分隔列表以匹配所有给定的测试用例?
Mysql小提琴: http://sqlfiddle.com/#!9/798faa/2