Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQLi一个查询而不是两个查询(单while循环而不是while循环中的while循环)_Php_Loops_Mysqli_While Loop - Fatal编程技术网

Php MySQLi一个查询而不是两个查询(单while循环而不是while循环中的while循环)

Php MySQLi一个查询而不是两个查询(单while循环而不是while循环中的while循环),php,loops,mysqli,while-loop,Php,Loops,Mysqli,While Loop,我有三张桌子: 我希望每行获得以下输出: ProductId = 1 ProductCode = 1 ProductRetailPrice = 1 SubProductThumb = 1.jpg (the first subproducts thumb, where ProductId = 1) Sub Products of ProductId 1 --------------------------- SubProductId = 1 SubProductPieces = 10

我有三张桌子:

我希望每行获得以下输出:

 ProductId = 1
 ProductCode = 1
 ProductRetailPrice = 1
 SubProductThumb = 1.jpg (the first subproducts thumb, where ProductId = 1)

Sub Products of ProductId 1
---------------------------
SubProductId = 1
SubProductPieces = 10

SubProductId = 4
SubProductPieces = 40

SubProductId = 7
SubProductPieces = 70
我在MySQL上得到了以下代码:

$show_product_content = mysql_query("
        SELECT DISTINCT a.`ProductId`, a.`ProductCode`, a.`ProductRetailPrice`, a.`ProductPrice`, a.`ProductOffer`, a.`ProductTopSeler`, a.`ProductStrass`, a.`ProductStatus`, b.`SubProductThumb`
        FROM `Products` as a, `SubProducts` as b
        WHERE b.ProductId=a.ProductId
        GROUP BY a.`ProductId`
    ");

    while($row = mysql_fetch_array($show_product_content))
    {
        echo '<br />ProductId = '.$row['ProductId'].'<br />';
        echo 'ProductCode = '.$row['ProductCode'].'<br />';
        echo 'ProductRetailPrice = '.$row['ProductRetailPrice'].'<br />';
        echo 'SubProductThumb = '. $row['SubProductThumb'].'<br /><br />';

        $product_id = $row['ProductId'];
        $show_sub_product_content = mysql_query("
            SELECT SubProductId, SubProductPieces, SubProductStatus, SubProductRingSize6, SubProductRingSize7, SubProductRingSize8, SubProductRingSize9, c1.ColorHex as Color1, c1.ColorName as ColorName1, c2.ColorHex as Color2, c2.ColorName as ColorName2
            FROM SubProducts
            INNER JOIN Colors c1 ON c1.ColorId=SubProducts.SubProductColor1
            INNER JOIN Colors c2 ON c2.ColorId=SubProducts.SubProductColor2
            WHERE ProductId='$product_id'
        ");

        echo 'Sub Products of ProductId '.$product_id.'<br />------------------------------------<br />';

        while($row = mysql_fetch_array($show_sub_product_content))
        {
            echo 'SubProductId = '.$row['SubProductId'].'<br />';
            echo 'SubProductPieces = '.$row['SubProductPieces'].'<br /><br />';
        }
    }
$show\u product\u content=mysql\u查询(“
选择不同的a.`ProductId`、a.`ProductCode`、a.`ProductRetailPrice`、a.`ProductPrice`、a.`ProductOffer`、a.`ProductTopSeler`、a.`ProductStrass`、a.`ProductStatus`、b.`SubProductThumb`
从'Products'作为a,从'SubProducts'作为b
其中b.ProductId=a.ProductId
按a.`ProductId分组`
");
而($row=mysql\u fetch\u数组($show\u product\u content))
{
回显“
ProductId=”.$row['ProductId']”。
; 回显“ProductCode=”.$row['ProductCode']。
; 回显“ProductRetailPrice=”.$row['ProductRetailPrice']。
; 回显'SubProductThumb='。$row['SubProductThumb'].

; $product_id=$row['ProductId']; $show\u sub\u product\u content=mysql\u查询(“ 选择SubProductd、SubProductPieces、SubProductStatus、SubProductRingSize6、SubProductRingSize7、SubProductRingSize8、SubProductRingSize9、c1.ColorHex作为Color1、c1.ColorName作为ColorName1、c2.ColorHex作为Color2、c2.ColorName作为ColorName2 来自子管道 c1上的内部连接颜色c1.ColorId=SubProducts.SubProductColor1 c2上的内部连接颜色c2.ColorId=SubProducts.SubProductColor2 其中ProductId=“$product\U id” "); echo“ProductId的子产品”。$product_id.
---------------------------------------
; 而($row=mysql\u fetch\u数组($show\u sub\u product\u content)) { 回显“subproductd=”.$row['subproductd']。
; 回显“subproductsPieces=”.$row['subproductsPieces']。

; } }

但我想用prepare语句和单个查询来实现这一点,这可能吗?

我认为在这种特定情况下,左连接应该很有用。
我正在做一些测试,我会让你知道的。

下面是你的单个查询,我结合了你的两个查询

 SELECT a.`ProductId`, a.`ProductCode`, a.`ProductRetailPrice`, a.`ProductPrice`, a.`ProductOffer`, a.`ProductTopSeler`, a.`ProductStrass`, a.`ProductStatus`, b.`SubProductThumb`, b.SubProductId, b.SubProductPieces, b.SubProductStatus, b.SubProductRingSize6, b.SubProductRingSize7, b.SubProductRingSize8, b.SubProductRingSize9, c1.ColorHex as Color1, c1.ColorName as ColorName1, c2.ColorHex as Color2, c2.ColorName as ColorName2
    FROM `Products` as a, `SubProducts` as b
    LEFT JOIN Colors c1 ON c1.ColorId=b.SubProductColor1
    LEFT JOIN Colors c2 ON c2.ColorId=b.SubProductColor2
    WHERE b.ProductId=a.ProductId
    GROUP BY a.`ProductId`

很可能,在查询中使用内部联接将所有结果合并到一个查询中,然后在这些结果中循环。您能帮我吗?这只回显一个子管道,我要回显所有具有ProdicId 1的子管道等