我是php和mySQL的新手。我有一个左连接查询,我用它来查找客户已注册的所有产品。我的查询在phpmyadmin中工作,我可以使用以下代码在php中回显它:
$custProds = "SELECT t.prodType, s.sizes, c.color FROM registeredProducts p LEFT JOIN prodTypes t ON t.id = p.prodType LEFT JOIN prodSizes s ON s.id = p.prodSize LEFT JOIN prodColors c ON c.id = p.prodColor WHERE p.customerID = '".$thisCust."'";
$allCustProds = mysql_query($custProds);
while($prodRow = mysql_fetch_array($allCustProds)){
echo $prodRow['prodType']. " - ". $prodRow['sizes']. " - ". $prodRow['color'];
echo "<br />";
}
但是,我不想回应它让用户看到,我想将结果存储在变量中供以后使用。我尝试过这样做:
while($prodRow = mysql_fetch_array($allCustProds)){
$allProds = $prodRow['prodType']. " - ". $prodRow['sizes']. " - ". $prodRow['color'];
}
但这只会让我插入最近的行而不是所有结果。与使用my_fetch_assoc
一样here。我也试过这个:
while($prodRow = mysql_fetch_array($allCustProds)){
$allProds = array($prodRow['prodType']. " - ". $prodRow['sizes']. " - ". $prodRow['color']);
}
哪个回声'数组'。我跟着this post并使用了print_r($allProds);
,再一次只给了我最后插入的行。我花了几个小时研究这个,并且非常感谢任何帮助。谢谢。
答案 0 :(得分:1)
我想出来并希望发布以防任何其他人遇到此问题。需要将$allProds
声明为数组,然后使用array_push
存储每个实例。然后使用implode存储到一个变量中供以后使用。
$custProds = "SELECT t.prodType, s.sizes, c.color FROM registeredProducts p LEFT JOIN prodTypes t ON t.id = p.prodType LEFT JOIN prodSizes s ON s.id = p.prodSize LEFT JOIN prodColors c ON c.id = p.prodColor WHERE p.customerID = '".$thisCust."'";
$allCustProds = mysql_query($custProds);
$allProds = array();
while($prodRow = mysql_fetch_assoc($allCustProds)){
array_push($allProds, $prodRow['prodType']. " - ". $prodRow['sizes']. " - ". $prodRow['color']);
}
$custProds = implode('<br>', $allProds);
答案 1 :(得分:0)
正如您所知,您需要将行推送到数组变量中。这是另一种形式,使用唯一ID,如果你有一个,以防你想稍后拉出一个特定的行。
while($prodRow = mysql_fetch_array($allCustProds)){
$allProds[$prodRow['prodID']] = array($prodRow['prodType']. " - ". $prodRow['sizes']. " - ". $prodRow['color']);
}
foreach ( $allProds as $prodID => $prodRow ) {
echo "$prodID: $prodRow<br>";
}
// can also be accessed by:
echo $allProds[$getProdID];