使用SHOW COLUMNS查询时,PHP在HTML与纯PHP文件中输出不一致的问题
为什么SHOW COLUMNS查询在HTML标签和纯PHP中输出结果不同?
这事儿本质是你在两种场景下,从SHOW COLUMNS返回的结果集里取了不同的字段值而已,给你理清楚来龙去脉:
首先,SHOW COLUMNS FROM 表名这个查询返回的结果集,每一行对应表的一个列,包含的核心字段有这些:
Field: 列名(比如id、username)Type: 数据类型(比如INT(11)、VARCHAR(255))- 还有
Null、Key、Default、Extra这些额外字段
接下来看两种场景的差异:
1. 在HTML标签中输出数据类型的情况
你当时的代码大概率是这样的(举个例子):
<?php $result = mysqli_query($conn, "SHOW COLUMNS FROM users"); while($row = mysqli_fetch_assoc($result)) { ?> <p><?php echo $row['Type']; ?></p> <?php } ?>
或者用索引数组的话,可能是echo $row[1];(因为Type是结果集里的第二个字段,索引从0开始算,Field是0,Type是1),所以输出的自然是数据类型。
2. 纯PHP文件中输出列名的情况
而你在纯PHP里的代码可能是这样的:
<?php $result = mysqli_query($conn, "SHOW COLUMNS FROM users"); while($row = mysqli_fetch_array($result)) { echo $row[0] . "<br>"; } ?>
这里$row[0]对应的是结果集里的第一个字段Field,也就是列名,所以输出的是列名。
关键总结
不管是在HTML里还是纯PHP里,SHOW COLUMNS返回的结果集是完全一样的,差异只在于你读取结果时,是选择了Type字段(对应数据类型)还是Field字段(对应列名),或者用索引数组时取了不同的索引位置。
如果想在纯PHP里输出数据类型,只需要改成echo $row['Type'];或者echo $row[1];就行;反过来在HTML里要输出列名,就用$row['Field']或者$row[0]。
内容的提问来源于stack exchange,提问作者ritesh rc
相关产品推荐
相关产品推荐

