2010-10-20 41 views
0

我目前正在運行多個mysql查詢,但只想運行一個並通過它循環。我該如何改進?一個查詢而不是多個查詢

$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']; 
} 

每個查詢即可進行相同,但$ productcode2和$ productcode3等

回答

6

... WHERE代碼( '$ productcode1', '$ productcode2',...)

+0

用在哪裏,怎麼會升,然後取每個每個產品代碼相匹配的行結果如何?就像上面的例子一樣。 row1,row2等? – beam 2010-10-22 14:27:23

+0

我不知道我理解。你已經有了一個while循環($ rows1 = mysql_fetch_array($ query))',它將遍歷每一行。該查詢將返回與您的列表中的任何產品代碼匹配的行時使用..在 – 2010-10-22 14:41:08

1

更改「where code ='$ prouctcode1'」on「where code IN(...)」

1

一種解決方案是使用PDO's prepared statements

基於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

阿格,完全誤解了這個問題。那麼,如果你真的想以更高效的方式運行多個查詢,那麼試試這個。 – nnevala 2010-10-20 14:49:45