2010-10-20 8 views
0

Je cours actuellement plusieurs requêtes mysql mais je veux en exécuter une seule et la faire défiler. Comment puis-je améliorer cela?Une requête au lieu de plusieurs requêtes

$query = mysql_query("SELECT productid, code, size, quantity, sizechart, rprice, price, weight FROM inventory WHERE code = '$productcode1'"); 
while ($rows1 = mysql_fetch_array($query)) 
{ 
    $productids1 = $rows1['productid']; 
    $codes1 = $rows1['code']; 
    $sizes1 = ucwords($rows1['size']); 
    $quantitys1 = $rows1['quantity']; 
    $sizechart = $rows1['sizechart']; 
    $rprice = $rows1['rprice']; 
    $sprice = $rows1['price']; 
    $dweight = $rows1['weight']; 
} 

Chaque requête porte alors sur la même mais productcode2 $ et $ productcode3 etc.

Répondre

6

... où le code IN ('productcode1 de $', 'productcode2 de $', ...)

+0

en utilisant où dans, comment l puis aller chercher des résultats pour chaque ligne qui correspond à chaque productcode? comme dans l'exemple ci-dessus. row1, row2 etc? – beam

+0

Je ne suis pas sûr de comprendre. Vous avez déjà une boucle 'while ($ rows1 = mysql_fetch_array ($ query))' qui parcourrait chaque ligne. La requête retournera les lignes qui correspondent à l'un des codes de produit dans votre liste lors de l'utilisation où ... –

1

Modifier "Où code = '$ prouctcode1'" sur "où code IN (...)"

1

Une solution utiliserait PDO's prepared statements.

exemple rapide, non testé et sale référence basé sur PHP:

$stmt = $dbh->prepare("SELECT productid, code, size, quantity, sizechart, rprice, price, weight FROM inventory WHERE code = :code"); 
$stmt->bindParam(':code', $code); 

foreach ($productCodes as $code) { 
    $stmt->execute(); 
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
    // Do something with the results 
} 
+0

Argh, totalement mal compris la question. Eh bien, essayez ceci si vous voulez réellement exécuter plusieurs requêtes de manière plus efficace. – nnevala

Questions connexes