2011-07-09 6 views
0

'1001-1001' = 1001のint列を選択しますか?

SELECT item_id FROM (`phppos_items`) WHERE `item_id` = '1001-1001' 

を実行する場合、私はこの行

ITEM_IDは、int型の自動インクリメントカラムで取り戻します。これを防ぐ方法を教えてください。

+2

そのクエリから戻ってきたいものは何ですか? – Magnus

+1

item_idがintの場合、なぜ '1001-1001'と等しくなるのですか? –

+0

どうしたら起こるのを防ぐのですか? – Flimzy

答えて

3

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 
0

文字列でないものを引用しないでください。

+0

これは役に立たない/完全な答えではありません。もし引用符を削除するなら、彼はitem_id 0を探していて、これも彼を助けません。 – Flimzy

+0

これは実際には私がphpでis_numericがキャストされていればintにキャストできたので、少し役に立ちました。そうでなければ-1を使用します。 –

関連する問題