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

时间:2014-06-23 19:42:50

标签: 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 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);,再一次只给了我最后插入的行。我花了几个小时研究这个,并且非常感谢任何帮助。谢谢。

2 个答案:

答案 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];