【问题标题】:Displaying MySQL table in PHP在 PHP 中显示 MySQL 表
【发布时间】:2013-05-13 02:35:26
【问题描述】:

我有一个简单的问题。我有下面的 while 语句正在工作,但正在两次打印表中的所有内容。我是 PHP 和 MySQL 的新手,不知道为什么。有人可以帮我指出正确的方向吗?

while($row = mysql_fetch_array($result))
{
    echo "<tr>";

    // $row is array... foreach( .. ) puts every element
    // of $row to $cell variable
     foreach($row as $cell)
        echo "<td>$cell</td>";
        $linkID= $row['linkID'];
    echo '<td><a href="update.php?linkID=' . $linkID. '">Update Status</a></td>';

    echo "</tr>\n";
}

【问题讨论】:

  • 你在一段时间内使用 foreach
  • mysql_* 函数不再支持,它们是 officially deprecated不再维护,将在未来。您应该使用PDOMySQLi 更新您的代码,以确保您的项目在未来的功能。
  • 除非已知数据是 html 安全的,否则您应该使用 htmlspecialchars 转义 $cell

标签: php mysql while-loop html-table


【解决方案1】:

您的代码是正确的,唯一的问题是 mysql_fetch_array 带有第二个参数,并且第二个参数有三个选项(MYSQL_BOTH、MYSQL_ASSOC、MYSQL_NUM)。

默认情况下,如果您不指定它,它会设置为 MYSQL_BOTH,它会为您提供两个数组,一个带有数字索引,另一个带有关联索引。这就是你问题的根源

你可以简单地通过添加这个参数来解决这个问题:

while($row = mysql_fetch_array($result, MYSQL_ASSOC)){ 
.....

如果您愿意,MYSQL_NUM 也可以使用。

注意:

此扩展自 PHP 5.5.0 起已弃用,将来将被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展

因此,您必须使用 pdo 扩展,这样会更好,您会很感激的。

【讨论】:

    【解决方案2】:
    $row = mysql_fetch_array($result);
        echo "<tr>";
    
        // $row is array... foreach( .. ) puts every element
        // of $row to $cell variable
         foreach($row as $cell)
            echo "<td>$cell</td>";
            $linkID= $row['linkID'];
        echo '<td><a href="update.php?linkID=' . $linkID. '">Update Status</a></td>';
    
        echo "</tr>\n";
    

    试试这个

    【讨论】:

    • 感谢您的快速回复!有了这个,我仍然得到完全相同的东西(除了更新状态链接之外的所有东西)。
    猜你喜欢
    • 1970-01-01
    • 2014-03-24
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2015-06-02
    相关资源
    最近更新 更多