2015-06-14 70 views
-1

我在从数据库中提取信息并将其显示在页面上时遇到问题。在表格中,我在每列中有多个条目。所以我需要将这些信息以列ID的降序显示出来。但有了它,它在页面上显示这样的行:在html中显示多行

### ### ### 
#1# #1# #1# 
### ### ### 

### ### ### 
#2# #2# #2# 
### ### ### 

### ### ### 
#3# #3# #3# 
### ### ### 

我搞不​​明白我在这里做错了什么。这是因为我对php和mysql做了任何事情,所以我可能会写错的东西,但我不知道。

<? 
require 'dbinfo.php'; 

    $link = mysqli_connect($servername, $username, $password); 
    if (!$link) { 
    die('Could not connect: ' . mysqli_error($link)); 
    } 
    mysqli_select_db($link, $database) or die(mysqli_error($link)); 

    $query = "SELECT `id`, `build`, `buildby`, `description`, `download` FROM `buildlist` ORDER BY id DESC"; 
    $result = mysqli_query($link,$query) or die(mysqli_error($link)); 

    $row = mysqli_fetch_row($result); 
    $num = mysqli_num_rows($result); 
    ?> 

<? 
     $num = mysqli_num_rows($result); 
     if($num) { 
     while($row = mysqli_fetch_array($result)) { 
    ?> 

    <article class="one_third"> 
     <h2>Build <? echo $row['build'] ?></h2> 
     <img src="images/80x80.gif" alt=""> 
     <p>Build by <? echo $row['buildby'] ?><br /> 
     <br /><br /><br /> 
     <? echo $row['description'] ?><br /> 
     <br/> 
     <a href="<? echo $row['download'] ?>" class="download">Download this build</a></p><br /> 
    </article> 

    <article class="one_third midbox"> 
     <h2>Build <? echo $row['build'] ?></h2> 
     <img src="images/80x80.gif" alt=""> 
     <p>Build by <? echo $row['buildby'] ?><br /> 
     <br /><br /><br /> 
     <? echo $row['description'] ?><br /> 
     <br/> 
     <a href="<? echo $row['download'] ?>" class="download">Download this build</a></p><br /><br /><br /> 
    </article> 

    <article class="one_third lastbox"> 
     <h2>Build <? echo $row['build'] ?></h2> 
     <img src="images/80x80.gif" alt=""> 
     <p>Build by <? echo $row['buildby'] ?><br /> 
     <br /><br /><br /> 
     <? echo $row['description'] ?><br /> 
     <br/> 
     <a href="<? echo $row['download'] ?>" class="download">Download this build</a></p><br /> 
    </article> 

    <? }} ?> 
+0

通过跳过第一行,所以如果只有一个循环之前获取的行,你就什么也看不见。 – jeroen

回答

0

你的代码有一些错误。首先你不需要在循环之前获取一行。其次 - 您应该使用mysqli_fetch_assoc而不是mysqli_fetch_array或使用$ row [index]而不是$ row [string]。

下面是正确的代码:

<? 
    require 'dbinfo.php'; 

    $link = mysqli_connect($servername, $username, $password); 

    if (!$link) { 
     die('Could not connect: ' . mysqli_error($link)); 
    } 
    mysqli_select_db($link, $database) or die(mysqli_error($link)); 

    $query = "SELECT `id`, `build`, `buildby`, `description`, `download` FROM `buildlist` ORDER BY id DESC"; 
    $result = mysqli_query($link,$query) or die(mysqli_error($link)); 

    $num = mysqli_num_rows($result); 
    if($num) { 
     while($row = mysqli_fetch_assoc($result)) { 
?> 
+0

清理了一下,谢谢。我仍然遇到了正确显示提取行的问题。看到里面有#的第一个代码块。 – gravvy

+0

你的意思是升序而不是降序吗? – kulaeff

-2

您在查询时出现了一些错误 - 撇号不是必需的。以下查询应该可以解决问题:

SELECT id, build, buildby, description, download FROM buildlist ORDER BY id DESC 

它工作吗? :)

+1

反引号并不是必需的,但它们可以防止出现名为'mysql reserved words'的错误。 – SuperDJ

+0

在这种情况下,它们不是必需的,因为列名或表名都不是保留字。当然不会伤害。 – jeroen

0

您在第10,11行中有附加代码。在行15中代替if($num)写入if($num>0)。在第16行而不是$row = mysqli_fetch_array($result)$row = mysqli_fetch_array($result,MYSQLI_ASSOC)。使用<?php而不是<?