麻烦在MySQL中读表

时间:2013-09-15 18:58:27

标签: php sql mysqli

我试图简单地读取一个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>

没有输出。

5 个答案:

答案 0 :(得分:2)

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

$row = mysqli_fetch_array($result);

它应该正常工作。

答案 1 :(得分: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()为您提供数组(2维)中的整个结果集。

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

答案 2 :(得分:0)

你之前的元素上有一个display:none,所以输出可能会隐藏吗?从以下情况检查浏览器中的“页面源”:)

答案 3 :(得分: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`";

答案 4 :(得分: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

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