2012-01-19 5 views
0

I次のコードビットがありますSELECT句で複数のWHERE式を使用するにはどうすればよいですか?

$query = "SELECT * FROM jos_vm_product_details WHERE global_variant_id = '$global_variant_id'"; 
$result = mysql_query($query); 


while($row = mysql_fetch_array($result)) { 
$row['name']; 
} 

は何かが一致しただけで$行[「名前」]を選択することが可能です:任意の助けをいただければ幸いです

Select $row['name'] WHERE id = $id 

+1

結果を特定の '$ id'にフィルタリングするためにSQLクエリを変更しないでください。 –

+0

クエリの中に 'WHERE'条件を入れることはできませんか? – Marco

+0

サンプルコードは、[SQLインジェクション](http://unixwiz.net/techtips/sql-injection.html)の脆弱性がありますが、これは非常に深刻な[セキュリティ上のリスク]です(http://bobby-tables.com/ )。この穴を修正するには、旧式のmysql拡張機能を[PDO](http://php.net/PDO)に切り替え、[prepared statements](http://www.php.net/PDO.prepared-statements)を使用してください。文字列に直接挿入するのではなく、パラメータとして値を渡します。 PDOチュートリアルが必要な場合は、「PHPとPDOでMySQLスクリプトを書く」(http://www.kitebird.com/articles/php-pdo.html)を試してみてください。あなたが保存したサイトはあなた自身のものかもしれません。 – outis

答えて

4

私はあなたの質問を完全に理解していませんが、質問でそれを制限することができます:

そうでない場合は、あなたが、フェッチループの中で、それを制限するようなものを使用する必要がある場合:

while($row = mysql_fetch_array($result)) { 
    if ($row['id'] == $id) { 
    echo $row['name']; 
    } 
} 

しかし、これはより良い私の最初の例のように、クエリのWHERE句で処理されます。

+0

このようにするなら、1つの結果しか期待できないので、 'if($ row = mysql_fetch_array($ result)){echo $ row ['name']; } 'は動作します。 –

1

あなたが好むならば、あなたはIDが一致しない場合(次の行にないスキップするwhileループ内で条件文を追加することができ、あなたのSQLステートメントを変更し、

AND id = '$id' 

を追加したりすべきです推奨)

if ($row['id'] != $id) continue 
0

アプリケーションの健全性のために:決してアプリケーション層の出力を「フィルタリング」しないでください。あなたのDBは、これらのすべてを最速で簡単な方法で処理するように設計されています。

マイケルとボロディンは何を言ったのですか?

関連する問題