【问题标题】:Display multiple rows in html在html中显示多行
【发布时间】:2015-06-14 08:59:33
【问题描述】:

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

### ### ###
#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>

    <? }} ?>

【问题讨论】:

  • 通过在循环之前获取一行,您会跳过第一行,因此如果只有一个,您将看不到任何内容。

标签: php mysql mysqli row


【解决方案1】:

您的代码中有一些错误。首先,您不需要在循环之前获取一行。其次 - 你应该使用 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) ) {
?>

【讨论】:

  • 这清理了一些东西,谢谢。我仍然有正确显示获取的行的问题。查看第一个带有 # 的代码块。
  • 你的意思是升序而不是降序?
【解决方案2】:

您在第 10、11 行有附加代码。在第 15 行而不是 if($num)if($num&gt;0)。在第 16 行而不是 $row = mysqli_fetch_array($result)$row = mysqli_fetch_array($result,MYSQLI_ASSOC)。使用&lt;?php 而不是&lt;?

【讨论】:

    【解决方案3】:

    您的查询中有一些错误 - 撇号不是必需的。以下查询应该可以解决问题:

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

    有效吗? :)

    【讨论】:

    • 反引号不是必需的,但它们可以防止出现名为 mysql reserved words 的错误。
    • 在这种情况下,它们不是必需的,因为列名或表名都不是保留字。不过当然不疼。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 2021-02-15
    • 1970-01-01
    • 2021-09-26
    • 2012-11-09
    • 2010-12-25
    • 1970-01-01
    相关资源
    最近更新 更多