MYSQL 查询代理奇怪

标签: MySQL
发布时间: 2015/6/11 0:18:53
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

所以我有此查询

 SELECT COUNT(b.user_ticket_id) as tiketscount
 FROM event_tickets a
 INNER JOIN user_tickets b ON a.event_ticket_id = b.event_ticket_id
 WHERE b.status = 'used' AND a.event_id = '1'

这给了我预期的结果 (即计数 = 1),我决定尝试下面的代码查询

 SELECT COUNT(b.user_ticket_id) as tiketscount
 FROM event_tickets a
 INNER JOIN user_tickets b ON a.event_ticket_id = b.event_ticket_id
 WHERE b.status = 'used' AND a.event_id = '1  DROP TABLE contact "1=1"'

和我以前得到相同的结果可是,当我换一到 2 像下面,没有结果,可能 mysql 使用它找到的第一个字符?

 SELECT COUNT(b.user_ticket_id) as tiketscount
 FROM event_tickets a
 INNER JOIN    user_tickets b ON a.event_ticket_id = b.event_ticket_id
 WHERE b.status = 'used' AND a.event_id = '2  DROP TABLE contact "1=1"'

任何人都知道为什么那是可能的吗?谢谢你

我使用的 MYSQL 5.5.30 InnoDB

解决方法 1:

event_id 是数字的列类型的某种 (也许 INT),所以 MySQL 转换您的字符串 '1 DROP TABLE contact "1=1"'1 使它与第一个查询相同。

它也在做第三个查询中它是最好要转换的值,并相同,蒸馏下来到查询:

SELECT COUNT(b.user_ticket_id) as tiketscount FROM event_tickets a INNER JOIN    user_tickets b ON a.event_ticket_id = b.event_ticket_id
WHERE b.status = 'used' AND a.event_id = 2

这样的假设没有记录与 event_id 的 2 和 status 的 '使用'。

如果你的专栏是 INT 和没有某种形式的文本就没有必要将你数字括在引号中并将实际上气馁。

官方微信
官方QQ群
31647020