2012-02-23 15 views
0

ありがとうございます。あなたの回答に基づいて、私はこれを送り返すように見えます。私はそれが私がすぐに修正できるものかもしれないと思った。このMysqlクエリで(整数)とは何ですか?

私たちのクライアントのうちの1人が私たちにスクリプトを送ってきましたが、そのうちの1つに次のものが含まれていました。

AND catparentid = '".(integer)."'"; 

、誰もがそれをやっていることになって何語「整数」は、ブラケットわたってるしきであるか、なぜ任意のアイデアを持っていますか?私はそれについてオンラインで何かを見つけることができません。これはSQLクエリの最後の部分です。スクリプトは、 "。"このクエリでは問題は "整数"の部分だと思われます...?

これは、完全なクエリ....

$sql = "SELECT * FROM [|PREFIX|]categories WHERE catname = '".$GLOBALS['ISC_CLASS_DB']->quote($prod)."' AND catparentid = '".(integer)."'"; 

感謝です!

+0

の文字列を作成します。これはおそらくタイプミスです。 –

答えて

0

これは、PHPのエラーではなくMySQLの一つです。

catparentidの列は整数型です(これは良い考えです)が、変数が整数ではないので、castは整数になる可能性がありますが、変数はそうではありません実際にそこに:

$sql = "..AND catparentid = '".(integer) $catparentid ."'"; 
//          ^forgot something? 

はしかし、[|PREFIX|]を見て、それだけでプレースホルダas Michael suggests可能性が高いです。

+0

ありがとうMadmartigan、プレフィックス部分は大きなショッピングカートの一部ですので、すべてのスクリプトで使用されますが、catparentidのことは混乱します。 – Tsanders

0

クライアントは、値catparentidが整数であることを示しているだけで、PHPでクエリを実行するときに整数変数を(integer)に置き換える必要があります。

// An integer... 
$catparentid = 12345; 
$sql = "SELECT * FROM [|PREFIX|]categories WHERE catname = '".$GLOBALS['ISC_CLASS_DB']->quote($prod)."' AND catparentid = '".$catparentid."'"; 

あるいは、MySQLの中で数値を引用する必要はありませんので、:

$sql = "SELECT * FROM [|PREFIX|]categories WHERE catname = '".$GLOBALS['ISC_CLASS_DB']->quote($prod)."' AND catparentid = $catparentid"; 
+0

マイケルに感謝します。私たちはクライアントのためにそれを構築していないので、少し不思議です。行く準備ができています。うーん... – Tsanders

0
AND catparentid = '".(integer)."'"; 

は、ドットが文字列連結子として使用されるPHPの非常に強いにおいがあります。私はこれがPHPコードからcupy-pastedされ、完全に消毒されていないと思われる。 PHPで

これは、それが有効なSQLではありません種類

AND catparentid = '(integer)' 
+0

ありがとう、Eugen。彼らは「何か(何か)」を使用した。すべてのクエリで私に新しい。 – Tsanders

関連する問題