Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.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 While循环在MySql数据库中仅显示一个产品后停止_Php_Html_Mysql_Twitter Bootstrap - Fatal编程技术网

PHP While循环在MySql数据库中仅显示一个产品后停止

PHP While循环在MySql数据库中仅显示一个产品后停止,php,html,mysql,twitter-bootstrap,Php,Html,Mysql,Twitter Bootstrap,这个php while循环旨在显示存储在MySql数据库中的产品信息。while循环应该在引导卡中显示数据库中的整个产品。用于每个产品的面料和裁缝都存储在数据库中的单独表中。这些表是用外键连接的。为什么循环在只显示一个产品后停止?我如何解决这个问题 <div class="row" id="result"> <?php $query ="SELECT * FROM products, tailor_details"; $result=$dbcon->query($que

这个php while循环旨在显示存储在MySql数据库中的产品信息。while循环应该在引导卡中显示数据库中的整个产品。用于每个产品的面料和裁缝都存储在数据库中的单独表中。这些表是用外键连接的。为什么循环在只显示一个产品后停止?我如何解决这个问题

<div class="row" id="result">
<?php 
$query ="SELECT * FROM products, tailor_details";
$result=$dbcon->query($query);
while($row=$result->fetch_assoc()){
?>
    <div class="col-md-3 mb-2">         
        <div class="card-deck">      
            <div class="card border-secondary">     
                <img src="<?= $row['Picture'] ?>" class="card-img-top">
                <div class="card-body">
                    <h6 class="text light bg-info text-center rounded p-1"><?= $row['Name']; ?></h6>
                    <h4 class="card-title text-danger">Price: <?= number_format($row['Price']); ?>/-
                    </h4>
                    <p>Weight: <?= $row['Weight']; ?><br>Tailor: 

<?php 
    $tailor=$row['Tailor'];
    $getTailor="SELECT biz_name 
                FROM tailor_details 
                WHERE user_id=$tailor";
    $res=$dbcon->query($getTailor);
    while($rw = $res->fetch_assoc()){
        echo $row['biz_name'];
     } 
?>  
    <br>
     Fabric Used: 
<?php 
    $fabric=$row['Fabric'];
    $getfabric="SELECT FabricName FROM fabrics WHERE FabricsId=$fabric";
    $result=$dbcon->query($getfabric);
    while($row = $result->fetch_assoc()){
        echo $row['FabricName'];
    } 
?>
   </p>

                    <a href="#" class="btn btn-success btn-block">Customize</a>
                </div>
            </div>
        </div>
    </div>
<?php  
} // endwhile
?>
</div>
“我希望while循环在引导卡中显示每个产品及其详细信息,就像在电子商务网站中看到的一样;但我得到的实际输出只是一个产品,循环停止了!”

请参见下面的数据库架构:

产品表

织物台

裁缝详情表


正如很多人在他们的评论中告诉你的,你不需要三个查询,你只需要一个查询就可以了。我已将您的代码更改为仅使用一个查询:

<div class="row" id="result">
<?php 
$query ="SELECT picture,`Name`,price, biz_name,FabricName FROM products a join tailor_details b on a.Tailor=b.user_id join fabrics c on c.FabricsId=a.Fabric";
$result=$dbcon->query($query);
while($row=$result->fetch_assoc()){
    ?>
        <div class="col-md-3 mb-2">         
            <div class="card-deck">      
                <div class="card border-secondary">     
                    <img src="<?= $row['Picture'] ?>" class="card-img-top">
                    <div class="card-body">
                        <h6 class="text light bg-info text-center rounded p-1"><?= $row['Name']; ?></h6>
                        <h4 class="card-title text-danger">Price: <?= number_format($row['Price']); ?>/-
                        </h4>
                        <p>Weight: <?= $row['Weight']; ?><br>Tailor: 

    <?php 
        echo $row['biz_name'];
    ?>  
        <br>
        Fabric Used: 
    <?php 
        echo $row['FabricName'];
    ?>
       </p>

                        <a href="#" class="btn btn-success btn-block">Customize</a>
                    </div>
                </div>
            </div>
        </div>
    <?php  
} // endwhile
?>
</div>

尝试格式化更好的代码。我不明白第一个while循环在哪里结束,while$rw correct?@codes4life如果您从fecth_assoc获得布尔值,则表示您在查询中有错误,函数返回false如果您向我们展示这3个表的数据库架构,我敢打赌这3个查询可以合并为one@RiggsFolly是的。您只需一次即可完成此查询。在执行此操作的过程中,您在变量$result中为while设置了第一个查询,而为fabric设置的最后一个查询使用了相同的变量$result,因此在while循环中对其进行修改,从而丢失以前的所有结果