Php 使用三个SQL查询将信息从数据库拉入html列时发生冲突

Php 使用三个SQL查询将信息从数据库拉入html列时发生冲突,php,mysql,Php,Mysql,下面的代码几乎完全符合我的视觉要求。除第1列和第2列外,所有10个条目只显示相同的图片,而第3列每行显示一个唯一的条目 <!DOCTYPE html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Co

下面的代码几乎完全符合我的视觉要求。除第1列和第2列外,所有10个条目只显示相同的图片,而第3列每行显示一个唯一的条目

<!DOCTYPE html>
<head>
<meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Covid-Deaths</title>
  <link rel="stylesheet" type="text/css" href="covid.css">
  <script src="https://kit.fontawesome.com/1f285a5a86.js" crossorigin="anonymous"></script>
  <script src="http://code.jquery.com/jquery-3.5.1.min.js"></script>
  <script src="script.js"></script> 
</head>
<body>
<h1>You're terrible at this</h1>
<p>Get each picture to be unique</p>

<?php
//database Connection
include 'dbconfig.php';
// retrieving data from table accounts

$query  = "SELECT * FROM test_info where tf = 1 LIMIT 10";
$result = mysqli_query($conn, $query);
$query2  = "SELECT * FROM test_info where tf = 1 LIMIT 10 OFFSET 10";
$result2 = mysqli_query($conn, $query2);
$query3  = "SELECT * FROM test_info where tf = 1 LIMIT 10 OFFSET 20";
$result3 = mysqli_query($conn, $query3);

?>
<?php 

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {

if ($result2->num_rows > 0) {
    while ($row2 = $result2->fetch_assoc()) {

if ($result3->num_rows > 0) {
    while ($row3 = $result3->fetch_assoc()) {
?>

<div class="container">
<div class="card">
        <a href="<?php echo $row['obit_url'];  ?>"><img src="uploaded-images/<?php echo 
$row['picture'];?>" width=80%/></a>
        <h4><?php echo $row['names']; echo ", "; echo $row['age'];?></h4>
        <p><?php echo " "; echo "State: "; echo $row['state']; ?></p>                
</div>

<div class="card">
        <a href="<?php echo $row2['obit_url'];  ?>"><img src="uploaded-images/<?php echo 
$row2['picture'];?>" width=80%/></a>
        <h4><?php echo $row2['names']; echo ", "; echo $row2['age'];?></h4>
        <p><?php echo " "; echo "State: "; echo $row2['state']; ?></p>                
</div>

<div class="card">
        <a href="<?php echo $row3['obit_url'];  ?>"><img src="uploaded-images/<?php echo 
$row3['picture'];?>" width=80%/></a>
        <h4><?php echo $row3['names']; echo ", "; echo $row3['age'];?></h4>
        <p><?php echo " "; echo "State: "; echo $row3['state']; ?></p>                
</div>
    
</div>
<?php
 }
    }

 }
    }

 }
    }
?>
</body>
</html>

新冠病毒死亡
你在这方面很糟糕
让每张照片都是独一无二的

其输出的示例:

史蒂夫·保罗·玛丽

史蒂夫·保罗·约翰

史蒂夫·保罗·萨姆

我希望它看起来像什么:

史蒂夫·保罗·玛丽

Randy Kyle John

菲尔·斯科特·萨姆


我似乎无法让第一列和第二列拉入我知道存在的唯一条目。

在中间
循环时,第一列和第二列将保持不变,因为没有为它们获取新行

您可以将其更改为1
while
loop,然后只获取此1循环中的其他行

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $row2 = $result2->fetch_assoc();
        $row3 = $result3->fetch_assoc();

这将以相同的顺序获取所有3个结果。但是,如果其中任何一个不返回值,您必须知道该怎么办。

为什么需要三个查询?为什么不在一个组中检索30个,将结果粘贴在一个数组中,然后以10个为一组进行循环?有三个问题似乎使事情变得比需要的更复杂。我自己不使用mysqli(我更喜欢PDO),但我记得在检索前一个查询的结果之前尝试运行新查询时读到了一些问题,这可能是令人不安的事情。您在
中执行
WHILE
循环,在
WHILE
循环中执行
循环,因此在前10次显示您的3张卡,前两个将保持不变。当您进入第二次循环的第二次迭代时,第三次查询结果中不再有行可提取,并且下一张卡片也不会显示正确的代码将有助于您了解出现问题的原因。@droopsnoot有什么方法可以解释如何做到这一点吗?我会尝试做一些谷歌搜索,但同样,我是PHP新手,对我在做什么几乎一无所知。@Pepper谢谢你的解释。这就是为什么它会这样做的原因。