MySQL回声同时

时间:2017-05-31 13:37:15

标签: php mysql while-loop

大家好,我正在动态网站上工作,当我尝试回应结果时,我遇到了一些麻烦。 如果有人可以帮助我,我将非常感激。

<root>text1<child1></child1>text2<child2></child2>text3</root>

问题是我有3个ID页面,但它只显示其中2个。 我有

<?php 
$page = "SELECT * FROM Paginas";
$execute = $connect->query($page);
$pagename = $execute->fetch_all(MYSQL_ASSOC);
if ($connect->$page !== false){
    $maximo = "SELECT MAX(ID) FROM Paginas";
    $execute1 = $connect->query($maximo);
    $i = 0;
    while ($i <= $execute1){ 
        echo "<li><a href=#" . $pagename[$i]['Nome'] . ">".$pagename[$i]['Nome'] ."</a></li>";
        $i++;
    }
}
?>

所有数据库都正确填充,但while循环不会对其进行检索。

3 个答案:

答案 0 :(得分:1)

你的代码中有些东西没有多大意义,特别是while$i <= $execute1将整数与布尔值进行比较)的参数和你对{{{{{ 1}}(if尝试使用查询字符串作为mysqli对象的属性。)

您也不应该使用$connect->$page !== false作为一种可靠的方式来了解您何时获取所有行,因为这可能会返回数字3,但如果您只有2条记录(例如) ,MAX()并不准确,并会为您提供错误的结果。如果修改或删除了一行,则表中的ID可能不连续。

您应该使用MAX()作为while的参数,或者使用fetch_assoc()并使用fetch_all()。在任何情况下,它都会遍历返回的所有行,并在迭代遍历每一行后停止循环。我将使用第一个。

foreach

有关详细信息,请参阅每个功能的手册。我建议您阅读每个功能并了解它们实际执行的操作,因为这有助于您进一步构建应用程序。

答案 1 :(得分:0)

不要使用while,使用foreach:

foreach($pagename as $row) {
    echo "<li><a href=#" . $row['Name'] . ">".$row['Name'] ."</a></li>";
}

答案 2 :(得分:0)

您是否尝试为页面项生成菜单? 我不知道你要用$ maximo做什么?你试图得到最后一页什么?

如果你想生成菜单项,那么这应该更好:

<?php 
$query = "SELECT * FROM Paginas";
$execute = $connect->query($query);
$result = $execute->fetch_all(MYSQL_ASSOC);
if (is_array($result) && !empty($result)){
  foreach($result as $page){
    echo '<li><a href="#'.$page['Nome'].'">'.$page['Nome'].'</a></li>';
  }
}
?>