2010-10-20 85 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