1

我试图简单地读取 MySQL 表名称“歌曲”并将“标题”列写入 HTML。我刚开始使用 MySQL,所以任何人都可以解释为什么它不起作用?

(单列)SQL 表如下所示:

+---------+
|  TITLE  |
+---------+
|  Hello  |
|  World  |
|  Table  |
|  Value  |
+---------+

这是我在 PHP 页面中使用的代码

<ul>
    <?php
        $dbc = mysqli_connect('localhost', 'root', 'pass', 'music');
        $query = "SELECT title FROM songs";
        $result = mysqli_query($dbc, $query);
        $row = mysqli_fetch_array($result);
        while ($row = mysqli_fetch_array($result)) {
            echo '<li id="' . $row['title'] . '" data-title="' . $row['title'] . '">';
            echo '<img class="X" src="X.png" style="width: 14px; margin: 2px 0 -2px -4px; display: none;" />';
            echo '<span class="title">' . $row['title'] . '</span>';
            echo '</li>';
        }
    ?>
</ul>

没有输出。

4

5 回答 5

2

第一个mysqli_fetch_array是不需要的。您可以删除此行:

$row = mysqli_fetch_array($result);

那时它应该可以工作。

于 2013-09-15T19:02:23.693 回答
0
<ul>
    <?php
        $dbc = mysqli_connect('localhost', 'root', 'pass', 'music');
        $query = "SELECT title FROM songs";
        $result = mysqli_query($dbc, $query);
        //$row = mysqli_fetch_array($result);
        while ($row = mysqli_fetch_row($result)) {
            echo '<li id="' . $row['title'] . '" data-title="' . $row['title'] . '">';
            echo '<img class="X" src="X.png" style="width: 14px; margin: 2px 0 -2px -4px; display: none;" />';
            echo '<span class="title">' . $row['title'] . '</span>';
            echo '</li>';
        }
    ?>
</ul>

解释:

mysqli_fetch_array() 以数组(二维)形式为您提供整个结果集。

mysqli_fetch_row() 从结果集中为您提供一个条目,并将指针向前移动。当您需要多次迭代结果时,这并不好,但在您的情况下可以!

于 2013-09-15T19:04:04.197 回答
0

你有一个 display: none 之前的元素,所以也许输出在那里但隐藏了?从浏览器中检查“页面源”以防万一:)

于 2013-09-15T19:04:41.553 回答
0

尝试这个:

<ul>
<?php
    $dbc = mysqli_connect('localhost', 'root', 'pass', 'music');
    $query = "SELECT title FROM `songs`";
    $result = mysqli_query($dbc, $query);
    //$row = mysqli_fetch_array($result); You don't need this
    while ($row = mysqli_fetch_array($result)) {
        echo '<li id="' . $row['title'] . '" data-title="' . $row['title'] . '">';
        echo '<img class="X" src="X.png" style="width: 14px; margin: 2px 0 -2px -4px;     display: none;" />';
        echo '<span class="title">' . $row['title'] . '</span>';
        echo '</li>';
    }
?>
</ul>

看看这一行:

 $query = "SELECT title FROM `songs`";
于 2013-09-15T19:06:26.770 回答
0

您能否消除连接错误的可能性:

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

另外,您能否通过将所有 $row['title'] 替换为以下内容来编码结果以在 html 中显示:

htmlspecialchars($row['title'])

HTML 部分似乎没问题,所以也许你应该尝试在 while 循环中的代码中进行一些调试:

echo htmlspecialchars($row['title']); //only this within while loop

之后,我们可以找出问题所在。

于 2013-09-15T19:07:04.707 回答