我的php循环有什么问题?

我的php循环有什么问题?,php,for-loop,foreach,Php,For Loop,Foreach,我有一个名为pages的表,在名为Page的列中有两个条目具有相同的单词“about”。我想根据具有相同页面名称的条目数创建div 这应该很容易,但它只是看不出哪里出了问题 我有一个名为page的变量,我在索引页上回显它如下所示: $page = pageDivs($dbc, $path['call_parts'][0]) function pageDivs($dbc, $id){ $q="SELECT * FROM pages WHERE Page='$id'"; $r = mysqli_q

我有一个名为pages的表,在名为Page的列中有两个条目具有相同的单词“about”。我想根据具有相同页面名称的条目数创建div

这应该很容易,但它只是看不出哪里出了问题

我有一个名为page的变量,我在索引页上回显它如下所示:

$page = pageDivs($dbc, $path['call_parts'][0])
function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
$data=mysqli_fetch_assoc($r);
for ($i=1; $i<count($data); $i++) {
    echo '<div id="Content'.$i.'">'.$data['Content'].'</div>';
    }
}
在本例中,$path变量将等于字符串“about”

函数pageDivs$dbc,about如下所示:

$page = pageDivs($dbc, $path['call_parts'][0])
function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
$data=mysqli_fetch_assoc($r);
for ($i=1; $i<count($data); $i++) {
    echo '<div id="Content'.$i.'">'.$data['Content'].'</div>';
    }
}
或者这个:

function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
$data=mysqli_fetch_assoc($r);
$i=1;
foreach ($data AS $value){
    if ($i>count($data)){
    echo '<div id="Content'.$i.'">'.$value['Content'].'</div>';
    $i++;
        }
    }
function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
$data=mysqli_fetch_assoc($r);
$i=1;
foreach ($data AS $key=>$value){
    if ($i>count($data)){
    echo '<div id="Content'.$i.'">'.$data[$i]['Content'].'</div>';
    $i++;
        }
    }
}
或者这个:

function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
$data=mysqli_fetch_assoc($r);
$i=1;
foreach ($data AS $value){
    if ($i>count($data)){
    echo '<div id="Content'.$i.'">'.$value['Content'].'</div>';
    $i++;
        }
    }
function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
$data=mysqli_fetch_assoc($r);
$i=1;
foreach ($data AS $key=>$value){
    if ($i>count($data)){
    echo '<div id="Content'.$i.'">'.$data[$i]['Content'].'</div>';
    $i++;
        }
    }
}
我尝试了fetch_assoc和fetch_数组以及除$k=>$v之外的所有组合,我将$data放在了所有地方,或者$key放在了所有地方,或者$value放在了所有地方。它快把我逼疯了


很明显,我在这里遗漏了一些基本的东西,所以有人请你给我点化一下。我真的不在乎是使用for循环还是foreach循环。结果应该是一样的。有时我得到了条目1的7次迭代,而其他的我什么也得不到。有两个条目具有相同的名称,因此在本例中,max divs应为2,但我希望它保持动态。

而循环是其中一个:

function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
$i=1;
while ($data=mysqli_fetch_assoc($r)){?> 
    <div id="Content<?php echo $i; ?>">
        <?php echo $data['Content']?>
    </div>
    <?php $i++;
    }
}
In$data变量只有一个结果,最好使用mysqli_num_rows$r;为了计算你有多少个结果

<?php 
function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
//$data=mysqli_fetch_assoc($r);
$numofrowresult=mysqli_num_rows($r); //Count how many result you have
echo $numofrowresult;
$i = 1; //initalize counter for  the unique id

foreach($r as $values)
{
      echo '<div id="Content'.$i.'">'.$values['Content'].'</div>';
      $i++;
}
}

?>

请参考以下链接,并将其应用于您的代码和var_dump并查看HTML源代码。我不能确定,因为它不在代码段中。您是否打开了数据库连接?抱歉,这是一种侮辱?另外,对Sql注入非常开放。$dbc是我的数据库连接,它已经被证明是有效的。问题出在循环上。您希望SQL SELECT语句返回多行吗?如果是这样,您必须在循环内调用mysqli\u fetch\u assoc来从中获取所有行。只要调用一次,就会在$data中生成1D关联数组。查看文档中的while循环示例