从数据库中获取数据,并使用php将其显示在表中

从数据库中获取数据,并使用php将其显示在表中,php,mysql,database,select,Php,Mysql,Database,Select,很多人会认为这是一个重复的问题,并且已经给出了这个问题的答案。但是我有一个不同的问题,这里我不知道列的数量和列的名称 我有一个html文本输入类型,用户可以直接操作数据库。用户可以查询数据库中的任何表。所有表都有不同的列名和列数。我不能使用“descripe”和“showcolumn”sql语句,因为列的名称未知 这个问题的所有答案都认为程序员已经知道列名了 和表中的列数 因此,问题是: 如何获取表中的列数 如何获取表的列名以在表标题标记中显示它 您可以使用DESC TABLE\u NAME 返

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

我有一个html文本输入类型,用户可以直接操作数据库。用户可以查询数据库中的任何表。所有表都有不同的列名和列数。我不能使用“descripe”和“showcolumn”sql语句,因为列的名称未知

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

因此,问题是:

  • 如何获取表中的列数

  • 如何获取表的列名以在表标题标记中显示它


  • 您可以使用
    DESC TABLE\u NAME


    返回时需要知道字段的数量。

    使用
    在此处显示表格中的列\u name\u,当您获取结果时,行数的计数将告诉您有多少列

    返回的部分数据包含在可用于表标题的列的名称中

    $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'];
    }
    

    所以我从php文档中得到了问题的答案!在这里,我将发布我的代码片段,它执行运行时编写的“select”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>";
            }
        }
    
    if(strcmp($words[0],“select”)==0)//用于确保其select语句
    {
    $result=mysqli\u查询($conn,$sql);
    如果($结果)
    {
    回声';
    回声';
    对于($i=0;$iname.“;//此处仅从整个信息中获取名称
    }
    回声';
    while($row=mysqli\u fetch\u数组($result))
    {
    回声';
    
    对于($i=0;$i可能重复@ssemilla我猜您不理解这个问题。数据库中有许多表。用户可以在运行时查询任何表,因此表名未知。您显示的可能重复问题假设表名已知!您应该指定用户也不知道该选项卡le名称。在任何情况下,您只需要查询表名,例如,
    从信息模式中选择表名。tables;
    ,并将其与感谢您的回复中的答案结合起来,但这仍然不能解决我的问题。它要求程序员已经知道列的名称。在我的网站中,用户可以查询数据库中的任何表,因此在用户键入查询之前,表名是未知的。不,它不知道。第一个查询检索列的名称。foreach循环报告每个名称。您尝试过我发布的内容吗?您说过您的网站要求的唯一需要的信息是表名。谢谢您的回复,但我找到了另一种方法设置表中的字段数。即mysqli_num_字段($result)。现在我只想获取此列的标题。SC“table_NAME”返回一些记录,其中一个[Field]是这些列的名称。这不解决您的问题吗?