【问题标题】:Display all MySQL table data in html table在html表中显示所有MySQL表数据
【发布时间】:2016-10-01 03:42:13
【问题描述】:

我正在尝试在 html 表格中显示整个 mysql 表格。到目前为止,我发现以下代码可用于显示字段:

<?php
   $con=mysqli_connect("example.com","peter","abc123","my_db");
   // Check connection
   if(mysqli_connect_errno()) {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }

   $result = mysqli_query($con,"SELECT * FROM Persons");

   echo "<table border='1'>
      <tr>
         <th>Firstname</th>
         <th>Lastname</th>
      </tr>";

   while($row = mysqli_fetch_array($result)) {
      echo "<tr>";
      echo "<td>" . $row['FirstName'] . "</td>";
      echo "<td>" . $row['LastName'] . "</td>";
      echo "</tr>";
   }
   echo "</table>";

   mysqli_close($con);
?>

有没有一种方法可以显示所有列/行而不必将所有列名键入为

echo "&lt;td&gt;" . $row['FirstName'] . "&lt;/td&gt;";

【问题讨论】:

  • 请检查我的答案中的示例链接。另外向投票者发送一条消息...php.net/manual/en/mysqli-result.fetch-array.php 请在投票前尝试代码...
  • 据我所知,有三个愚蠢的反对者。好的,也许一个完整的例子可以完成这项工作。哦,另外还要感谢我对许多 cmet 的反对票,他们解释了我的回答中的错误。
  • @PeterDarmis 对不起??
  • 如果您没有对我的朋友投反对票,则无需说对不起,如果您这样做了...请先尝试阅读答案。我总是尝试在这里放一个小提琴或一个例子来表明答案是有效的。
  • 哦,不,我没有投反对票,我只是不确定你的评论是什么意思……我现在明白你的意思了。

标签: php html mysql html-table


【解决方案1】:

如果您要显示所有列,您可以这样做。或者,您可以有条件地添加过滤器。

但是,由于您似乎是 Web 开发的新手,所以我以一种简单的方式进行。

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM Persons");

echo "<table border='1'>";

$i = 0;
while($row = $result->fetch_assoc())
{
    if ($i == 0) {
      $i++;
      echo "<tr>";
      foreach ($row as $key => $value) {
        echo "<th>" . $key . "</th>";
      }
      echo "</tr>";
    }
    echo "<tr>";
    foreach ($row as $value) {
      echo "<td>" . $value . "</td>";
    }
    echo "</tr>";
}
echo "</table>";

mysqli_close($con);
?>

【讨论】:

  • @user3092953。而不是你当前的时间
  • 当然啦!非常感谢,列名怎么样?
  • 谢谢,但仍然显示列两次...列如下:0 id 1 case_id 2 FILE_NAME 3 doc_name
  • @user3092953,再次更新。使用 assoc 代替数组
  • 这可能对@Mojtaba 没有帮助。如果他有两行,它将在列中循环两次。我相信您需要将foreach ($row as $key =&gt; $value) { 更改为foreach ($row[0] as $key =&gt; $value) {。当然,还要添加一些逻辑来处理零行输出。
【解决方案2】:

你可以这样做

while($row = mysqli_fetch_array($result))
{
echo "<tr><td>" . implode("</td><td>",$row) . "</td></tr>";
}

Example

编辑

为了尝试使用数据库复制粘贴以下代码到 phpfiddle.org 工作区(首先检查主页中的 MySQLi 库)。

<?php    
/**
 * Mysqli initial code
 * 
 * User permissions of database
 * Create, Alter and Index table, Create view, and Select, Insert, Update, Delete table data
 * 
 * @package         PhpFiddle
 * @link            http://phpfiddle.org
 * @since           2012
*/    
require "util/public_db_info.php";              
$short_connect = new mysqli($host_name, $user_name, $pass_word, $database_name, $port);
$sql = "SELECT * FROM `books` WHERE title='The Martian'";      
$result = $short_connect->query($sql);   
if (($result) && ($result->num_rows > 0))
{
    echo "<table>";
    //convert query result into an associative array
    while ($row = $result->fetch_array())
    {
        echo "<tr><td>" . implode("</td><td>",$row) . "</td></tr>";
    }
    echo "</table>";
    $result->free();   
}  
$short_connect->close();  
?>

【讨论】:

  • 问题是他也想要数据库中的列名。您的方法不适用于 mysqli_fetch_assoc 或相关方法。
  • 这就是你从Is there a way that I can display all columns/rows without having to type all the column names as echo "&lt;td&gt;" . $row['FirstName'] . "&lt;/td&gt;"; 中理解的吗??? @duper51
  • 此外,将 MySQL 表字段名称作为表头抛出并不是一个很好的安全策略。 @duper51,如果您知道这一点,那么提及它可能会很好。
【解决方案3】:

要得到这样的垂直表:

PHP 代码:

$idProduct = $conexion->real_escape_string($_GET['planId']);
$result = $conexion->query("SELECT * FROM `g4s_products` WHERE id_product = '".$idProduct."'");
if ($result->num_rows > 0) {
    $html = '';
    while ($row = $result->fetch_assoc()) {
        $html .= '<div class="ppalDiv">' .
            '<p class="subtitleDetails"><b>Main Benefits</b></p>' .
            '<p class="textDetails">' . $row["description"] . '</p>' .
            '</div>' .
            '<div class="ppalDiv">' .
            '<p class="subtitleDetails"><b>Benefits Highlights</b></p>';

        echo $html;

        echo "<table>";
        foreach ($row as $key => $value) {
            echo "<tr>";
            echo "<th>" . $key . ":</th>";
            echo "<td>" . $value . "</td>";
            echo "</tr>";
        }

        echo "</table>";
    }
}
mysqli_close($conexion);

CSS 代码:

table, th, td {
border: 1px solid black;
border-collapse: collapse;

}

th, td {
    padding: 5px;
    text-align: left;
}

然后就完成了。享受

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2022-11-07
    • 1970-01-01
    相关资源
    最近更新 更多