2017-05-31 44 views
0

你好家伙我正在一个动态网站上工作,当我尝试回显结果时遇到了一些麻烦。 如果有人可以帮助我,我会非常感激。MySQL回声,而

<?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++; 
    } 
} 
?> 

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

ID 1 - Home 
ID 2 - HardSecure 
ID 3 - Services 

所有的数据基础,但while循环犯规retrive它正确填写。

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

'而($ I $ execute1){'这有什么你的目标? – Qirel

+0

@Qirel我贴错了它的<= –

+0

把while改为while($ row = $ execute1)'然后你可以使用row但是你想要 – ThisGuyHasTwoThumbs

回答

0

你们是不是要生成的页面项目菜单:

0

不要使用,同时,每次使用的foreach? 我不知道你想用$ 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>'; 
    } 
} 
?> 
+1

值得注意^只有当$ pagename等于数组时才会起作用 - 这会破坏对象 – ThisGuyHasTwoThumbs

1

你在你的代码中的一些东西没有多大意义,特殊性的说法你while$i <= $execute1比较一个整数为布尔值),并且您的参数if$connect->$page !== false尝试将查询字符串用作mysqli对象的属性)。

你也不应使用MAX()作为一个可靠的方式来知道当你取出所有的行,因为这可能会返回3号,但如果你只有2条记录(例子),在MAX() ISN” t准确,并会为您提供错误的结果。如果修改或删除一行,则表中的ID可能不连续。

您应该使用fetch_assoc()作为时间的参数,或者使用fetch_all()并使用foreach。在任何情况下,它都会遍历所有返回的行,并且一旦遍历每一行就停止循环。我会用第一个。

$page = "SELECT * FROM Paginas"; 
if ($execute = $connect->query($page)) 
    while ($row = $execute->fetch_assoc()) { 
     echo "<li><a href=#" . $row['Nome'] . ">".$row['Nome'] ."</a></li>"; 
    } 
} 

您应参阅每个功能的手册了解更多详情。我建议你阅读每个函数并理解他们实际做了什么,因为这会帮助你进一步构建你的应用程序。

+0

这是正确的答案^^:D +1 – ThisGuyHasTwoThumbs

+0

事实上,没有必要使它复杂化超过必要;-) *干杯* – Qirel

+1

确切地说,它是实现返回类型是对象xD的唯一答案 – ThisGuyHasTwoThumbs