2011-08-02 29 views
2

スクリプトを実行しようとするたびに次のエラーが発生します。ここでMySQLエラー: 'フィールドリスト'の列が不明

Unknown column '3624dfaf5f3429fc' in 'field list'

とにかく問題では部品はよく、私のスクリプトです。私は整数($num1)に$valcodeを変更した場合

$num1 = mt_rand(1, 2147483647); 
$num2 = mt_rand(1, 2147483647); 
$valcode = dechex($num1).dechex($num2); 
$query = "SELECT COUNT(*) FROM records WHERE valcode='$valcode'"; 
$result = mysql_query($query) or die("Query failed because ".mysql_error()); 

は、それが正常に動作します。一方、16進数では、このエラーにつながります。なぜどんなアイデア?

+1

これをコピーして直接貼り付けてもよろしいですか?この問題は、 '' 'がないと通常は起こりません。 – cwallenpoole

答えて

3

エラーは、コードを一重引用符で囲まなかった別のクエリに起因すると考えられます。これは、整数のときには有効ですが、引用符で囲まれていない16進文字列のときには有効になりません。引用符のない文字列は識別子(列名またはエイリアス)として解釈されます。

すなわち

SELECT COUNT(*) FROM records WHERE valcode = 123 

番号123、

SELECT COUNT(*) FROM records WHERE valcode = 3624dfaf5f3429fc 

valcodeを比較し、有効であることが3624dfaf5f3429fc名前列またはエイリアスにvalcodeを比較しようとして、有効ではありません。あなたが共有したコードがそのエラーメッセージにつながるとは思わない。

+0

非常に奇妙です。おそらく、あなたはhttp://ideone.com/BlEL8を見ることができます。これはコード全体(約22行)です。私は正直なところ、誤報者を呼び起こしたものは見えません。 – Fireworksable

+2

'INSERT'クエリの' $ valcode'には一重引用符はありません。これはエラーを生成するものです。なぜなら、 "lolol"がエラー出力の一部になるからです。 –

+0

それで、私は "lolol"に何らかの形でエラーを追加しました(おそらく、エラーなしで出力されたように、ページを10回ロードしたためです)。とにかく、ありがとう:)! – Fireworksable

関連する問題