2011-08-15 5 views
1

条件エリア内の別のSQLクエリを参照するwhileステートメント内でsqlクエリを実行できますか?

while ($row = mysql_fetch_assoc($result)) { 
    $active_bid_ids = array_unique($row); 
    $item_id = $active_bid_ids['item_id']; 
    echo $item_id; 
    echo '<br />'; 
    $sql = "SELECT item_name FROM items_list WHERE id='$item_id'"; 
    $result = mysql_query($sql, $cn) or 
     die(mysql_error($cn)); 
    $row = mysql_fetch_assoc($result); 
    $item_name = $row['item_name']; 
    echo $item_name; 
} 

を次のように私のコードがあると私はライン

$sql = "SELECT item_name FROM items_list WHERE id='$item_id'"; 

しばらく削除されるのに対し、私は途中で追加のSQLクエリを持っている場合、クエリは一度だけ実行されますようにそれはそう関数が正常に実行され、多くの結果が返されます。

+0

あなたはどこかでミスを犯しました。しかし、それでもループ内でクエリを実行するのは良い考えではありません。 – zerkms

答えて

4

ループを捨てている$ result変数と$ row変数を再利用しています。

試してみてください。

while ($row = mysql_fetch_assoc($result)) { 
    $active_bid_ids = array_unique($row); 
    $item_id = $active_bid_ids['item_id']; 
    echo $item_id; 
    echo '<br />'; 
    $sql = "SELECT item_name FROM items_list WHERE id='$item_id'"; 
    $innerresult = mysql_query($sql, $cn) or 
     die(mysql_error($cn)); 
    $innerrow = mysql_fetch_assoc($innerresult); 
    $item_name = $innerrow['item_name']; 
    echo $item_name; 
} 
+1

ベストプラクティスのヒント:潜在的なセキュリティ上の脆弱性を避けるためにクエリをパラメータ化し、次のようなJOINを使ってこの場合に必要なものを達成してください: 'SELECT I.item_name、A.active_bids_ids FROM active_bids INNER JOIN items_list I on A.item_id = I .id' –

+0

ベストプラクティスを指摘していただきありがとうございます。コードを完成させる前に、私は間違いなくそれをチェックして、もう少し勉強していきます。 –

関連する問題