'1001-1001' = 1001のint列を選択しますか?
SELECT item_id FROM (`phppos_items`) WHERE `item_id` = '1001-1001'
を実行する場合、私はこの行
ITEM_IDは、int型の自動インクリメントカラムで取り戻します。これを防ぐ方法を教えてください。
'1001-1001' = 1001のint列を選択しますか?
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でis_numericがキャストされていればintにキャストできたので、少し役に立ちました。そうでなければ-1を使用します。 –
そのクエリから戻ってきたいものは何ですか? – Magnus
item_idがintの場合、なぜ '1001-1001'と等しくなるのですか? –
どうしたら起こるのを防ぐのですか? – Flimzy