【问题标题】:Fetch data from database and display it in table using php从数据库中获取数据并使用php将其显示在表中
【发布时间】:2019-04-12 02:58:32
【问题描述】:

很多人会认为这是一个重复的问题,并且已经给出了此类问题的答案。但是我有一个不同的问题,这里我不知道列数和列名!

我有一个 html 文本输入类型,用户可以在其中直接操作数据库。用户可以查询数据库中的任何表。所有表都有不同的列名和列数。而且我不能使用'describe'和'show column' sql语句,因为列的名称是未知的。

这个问题的所有答案都认为程序员已经知道列名 和表中的列数。

所以问题是:

  1. 如何获取表格的列数?

  2. 如何获取表格的列名以显示在表格标题标签中?

【问题讨论】:

  • @ssemilla 我猜你不明白这个问题。数据库中有很多表。用户可以在运行时查询任何表,因此表的名称是未知的。您显示的可能重复的问题假定表的名称是已知的!
  • 您应该指定用户也不知道表名。无论如何,您只需要查询表名,例如SELECT table_name FROM information_schema.tables; 并将其与stackoverflow.com/questions/8334493/… 中的答案结合起来

标签: php mysql database select


【解决方案1】:

您可以使用DESC TABLE_NAME

迭代返回知道字段的数量。

【讨论】:

  • 感谢您的回复,但我找到了另一种获取表中字段数的方法。即 mysqli_num_fields($result)。现在我只想获取这些列的标题
  • DESC "TABLE_NAME" 返回一些记录,其中之一 [Field] 是这些列的名称。这不能回答你的问题吗?
【解决方案2】:

使用SHOW COLUMNS FROM your_table_name_here,当您获取结果时,行数的计数将告诉您有多少列。

返回的部分数据包含在您可以用作表格标题的列名中。

$ColsQ = $yourdb->prepare('SHOW COLUMNS FROM ' . $your_table_name_here);
$ColsQ->execute();
$ColsD = $ColsQ->fetchAll(PDO::FETCH_ASSOC);

echo 'There are ' . count($ColsD) . ' columns in the table';

foreach ($ColsD as $Column) {
    echo 'Column name is ' . $Column['Field'];
}

【讨论】:

  • 感谢您的回复,但这仍然不能解决我的问题。它希望程序员已经知道列的名称。在我的网站中,用户可以查询数据库中的任何表,因此在用户键入查询之前不知道表名。
  • 不,它没有。第一个查询检索列的名称。 foreach 循环报告每个名称是什么。你试过我发布的内容吗?
  • 您说您的网站要求的唯一需要的信息是表的名称。
【解决方案3】:

所以我从 php 文档中得到了我的问题的答案!在这里,我将发布我的代码的 sn-p,该代码执行“选择”SQL 语句编写的运行时,它显示了我从执行查询获得的结果中的表头和表的记录。

      if(strcmp($words[0], "select")==0) //for making sure its select statement
    {
        $result= mysqli_query($conn, $sql);
        if($result)
        {
            echo '<table border=1 style="border-collaspe=collaspe" class="table table-striped table-bordered table-hover dataTable no-footer">';
            echo '<tr>';
            for($i=0;$i<mysqli_num_fields($result);$i++)
            {
                $column_info=mysqli_fetch_field_direct($result, $i); 
               /*this function returns all the information about table metioned in the query.
               variable i over here refers to field no*/
                echo "<th>".$column_info->name."</th>"; //here fetching only name from whole information
            }
            echo '</tr>';
            while ($row = mysqli_fetch_array($result))
            {
                echo '<tr>';
                for($i=0;$i<mysqli_num_fields($result);$i++)
                {
                    echo '<td>'.$row[$i].'</td>';
                }
                echo '</tr>';
            }
            echo '</table>';
        }
        else
        {
            echo "<script>alert('Error occured, Please check your syntax or internet connection')</script>";
        }
    }

详细信息: PHP Documention page for mysqli_fetch_field_direct ( mysqli_result $result , int $fieldnr ) function

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多