當執行選擇一個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