2011-06-22 3 views
1

mysql結果に特定の値を持つ行があるかどうかを調べたいとします。たとえば、結果の行にproduct_category = 25があるかどうかを確認します。 mysql_fetch_arrayを使用せずに実行できますか? mysql_fetch_arrayを同じ結果に2回使用しますか? 回避策はありますか?結果を別の変数にコピーして、mysql_fetch_arrayを実行することはできますか?私はそれを試みましたが、元の変更(mysql_fetch_arrayがそれを通り過ぎる)としてコピーが変更されます。PHP mysql結果の値をチェックする方法は?

+0

おそらく制限をクエリの一部にすることを検討する必要があります。しかし、あなたが細部を知らせたり、コードを表示したりしないので、確実に言うのは難しいです。 – Jon

+0

私はあなたがWHERE条件を置くことによってのみクエリを制限する必要があると思う:**どこproduct_category = 25 ** ..これはバッターsolution.thxだろう。 – Chandresh

答えて

0

コードを知らなくても、私は推測する必要があります。

mysql-result-resourceは、具体的な結果に対するカーソルです。これは、現在のエントリに直接アクセスできることを意味します。すべての結果アイテムにアクセスするには、結果を繰り返し処理する必要があります(mysql_fetch_array()など)。 2回呼び出すことができない場合は、問合せの結果として1つの項目が1つしかないことがあります。これは、必要な回数だけ呼び出すことができるためですが、リソースから取得する行がもうない常にfalseを返します。

1

mysql_fetch_arrayを2回使用することはできません(同じ行を取得することもできます)。これは、結果内の行にポインタを進めるためです。 (したがって、複数の行を取得する場合、最初の呼び出しは最初の行をフェッチし、2番目の行は2番目の行をフェッチします)。

Shaktiは既に指摘したように、ループを使用してすべての行をテストし、期待値:

while ($row = mysql_fetch_array($result)) { 
    if ($row['product_category'] == 25) { /* execute your code here */ } 
} 
+1

を2回フェッチできます。 mysql_data_seek()を使用して内部ポインタをリセットするだけです – ariefbayu

+0

もちろんです。しかし、それは彼の質問ではなかったし、彼が何をしようとしていた(またはしようとしている)ものでもなかった。 – enyo

+0

実際、mysql_data_seek()は私が必要としていたものです。 –

関連する問題