【问题标题】:Nested mysql while loop not returning expected results嵌套的mysql while循环未返回预期结果
【发布时间】:2018-05-04 09:00:13
【问题描述】:

我有 2 个表,我正在尝试使用嵌套的 while 循环来列出所有可能性。不幸的是,我只得到一小部分结果。任何帮助深表感谢。

产品表

Product_ID | Product_Name | Product_Desc
0          | Box          | Big Box     
1          | Toy          | Nice Toy  

城市表

City_ID    | City_Name 
0          | Cincinnati    
1          | Detroit
2          | San Francisco
3          | San Diego
4          | New York

预期的结果:

0 Box Big Box 0 Cincinnati
0 Box Big Box 1 Detroit
0 Box Big Box 2 San Francisco
0 Box Big Box 3 San Deigo
0 Box Big Box 4 New York
1 Toy Nice Toy 0 Cincinnati
1 Toy Nice Toy 1 Detroit
1 Toy Nice Toy 2 San Francisco
1 Toy Nice Toy 3 San Diego
1 Toy Nice Toy 4 New York

我的错误结果:

0 Box Big Box 0 Cincinnati
1 Toy Nice Toy 0 Cincinnati

这是我的代码:

query = "SELECT * FROM Products";
$result = mysqli_query($con, $query);

$query2 = "SELECT * FROM Cities";
$result2 = mysqli_query($con, $query2);


while($row = mysqli_fetch_assoc($result))
    {
         $product_id = $row['Product_ID'];
         $product_name = $row['Product_Name'];
         $product_desc = $row['Product_Desc'];

        while($row = mysqli_fetch_assoc($result2))
        {
        $city_id = $row['City_ID'];
        $city_name = $row['City_Name'];
        }

    echo "$product_id $product_name $product_desc $city_id $city_name\n";

}

不幸的是,上述方法不起作用,我只得到这个结果。我应该改用 foreach 产品吗?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    实际上你可以在不使用嵌套循环的情况下通过单个查询获得相同的结果

    $query = "SELECT p.*,c.* FROM Products p,City c";
    

    【讨论】:

    • 非常快速的清洁解决方案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-11-05
    • 2015-02-24
    • 1970-01-01
    • 2020-09-30
    • 2021-11-03
    • 2020-06-15
    • 2018-12-16
    • 1970-01-01
    相关资源
    最近更新 更多