Php 将mySQL左连接查询的多行结果存储为一个变量

Php 将mySQL左连接查询的多行结果存储为一个变量,php,mysql,arrays,Php,Mysql,Arrays,我不熟悉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 L

我不熟悉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 />";
        }
但这只会给出最近插入的行,而不是所有结果。如图所示,使用my_fetch_assoc与此相同。我也试过:

        while($prodRow = mysql_fetch_array($allCustProds)){
            $allProds = array($prodRow['prodType']. " - ". $prodRow['sizes']. " - ". $prodRow['color']);
        }

哪个与“数组”相呼应。我遵循并使用了
print\r($allProds)再次只给了我最后插入的行。我已经花了几个小时研究这个问题,如果有任何帮助,我将不胜感激。谢谢。

我找到了答案,并想发表文章,以防其他人有此问题。需要将
$allProds
声明为数组,然后使用
array\u push
存储每个实例。然后使用内爆将其存储到一个变量中供以后使用

        $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);
$custProds=“从注册的产品中选择t.prodType、s.size、c.color p LEFT JOIN prodTypes t ON t.id=p.prodType LEFT JOIN prodTypes s ON s.id=p.prodSize LEFT JOIN prodColors c ON c.id=p.prodColor,其中p.customerID=”“$thisCust.”;
$allCustProds=mysql\u查询($custProds);
$allProds=array();
而($prodRow=mysql\u fetch\u assoc($allCustProds)){
数组推送($allProds,$prodRow['prodType'].“-”$prodRow['sizes'.]。“-”$prodRow['color']);
}
$custProds=内爆(“
”,$allProds);
正如您所想,您需要将行推入数组变量中。这是另一种形式,使用唯一的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];
while($prodRow=mysql\u fetch\u数组($allCustProds)){
$allProds[$prodRow['prodID']]=array($prodRow['prodType'].“-”$prodRow['sizes'.“-”$prodRow['color']);
}
foreach($prods作为$prodID=>$prodRow的所有产品){
echo“$prodID:$prodRow
”; } //也可通过以下方式访问: echo$allProds[$getProdID];
while循环将按顺序遍历所有行,但您要为获得的每一行设置$allProds。这意味着它会被覆盖。您可能想做的是,在执行while循环之前将$allProds设置为一个数组,然后将每个项目推送到数组上。尝试以下操作:
$allProds[]=…
@crimson\u penguin我知道如何将$allProds设置为一个数组,但如何将循环的结果推送到数组中而不覆盖它?@bloodyKnuckles谢谢您,但这不起作用,仍然说“数组”
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];