当执行选择一个int列,其中'1001-1001'= 1001?
SELECT item_id FROM (`phppos_items`) WHERE `item_id` = '1001-1001'
我回到此行
ITEM_ID是一个int自动递增列。我如何防止这种情况发生?
当执行选择一个int列,其中'1001-1001'= 1001?
SELECT item_id FROM (`phppos_items`) WHERE `item_id` = '1001-1001'
我回到此行
ITEM_ID是一个int自动递增列。我如何防止这种情况发生?
item_id
是一个整数列。
因此,当您将它与字符串('1001-1001'
)进行比较时,此字符串将转换为整数。字符串'1001-1001'
转换为整数1001
,因此它与您找回的列匹配。
至于如何避免它,这取决于你想要做什么。如果您正在尝试查找ID为'1001-1001'
的行,则该行将不存在,因为该列仅包含整数。
如果你想找到一个范围内所有ID,请尝试使用BETWEEN ... AND ...
operator代替:
SELECT item_id FROM (`phppos_items`) WHERE `item_id` BETWEEN 1001 AND 1001
不要引用事情是不是字符串。
这不是一个有用的/完整的答案。如果他要删除引号,他会搜索item_id 0,这也无济于事。 – Flimzy
这实际上有点帮助,因为我可以在php中检查if_nummeric,然后将其转换为int,否则使用-1。 –
你想从那个查询中找回什么? – Magnus
如果item_id是一个int,那么它为什么会等于'1001-1001'? –
你如何防止发生了什么? – Flimzy