mysql—从数据库中获取数据并使用php在表中显示

hjzp0vay  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(519)

很多人会认为这是一个重复的问题,这样的问题的答案已经给出了。但我有一个不同的问题,这里我不知道列数和列名!
我有一个html文本输入类型,用户可以直接操作数据库。用户可以查询数据库中的任何表。所有表都有不同的列名和列数。我不能使用“descripe”和“show column”sql语句,因为列的名称未知。
这个问题的所有答案都认为程序员已经知道表中的列名和列数。
所以问题是:
如何获取表中的列数?
如何获取表的列名以在表标题标记中显示它?

webghufk

webghufk1#

所以我从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>";
        }
    }

有关详细信息:mysqli\u fetch\u field\u direct(mysqli\u result$result,int$fieldnr)函数的php文档页

oiopk7p5

oiopk7p52#

你可以用 DESC TABLE_NAME .
它是知道字段数量的返回。

8i9zcol2

8i9zcol23#

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

相关问题