PHP中的“SHOW COLUMNS”查询不显示第一行

时间:2013-12-24 17:14:31

标签: php mysql apache lamp

祝大家节日快乐

我是PHP的新手,所以任何帮助都会非常感激。

我和许多人一样,在使用PHP和mysql访问的网站上工作,我正在寻找一个页面,我可以在其中设置或调整我的网站参数并将它们存储在名为&#34的mysql表中; Unit_parameters&#34 ;.

我想要做的是使用" SHOW COLUMNS" mysql查询获取"字段"名称及其相关的"类型"然后编写PHP代码以根据它的字段类型自动插入某个表单元素。例如,如果字段类型是布尔值,或者INT的短文本框等,我想插入一个复选框。

在尝试将我的字段列表显示在浏览器页面中的 SIMPLY 的过程中,我发现PHP正在从我的查询中取消第一行结果,这代表第一列我的Unit_parameters表。

以下是我的代码片段。

$currentDB =& connectToDB();  // Connection is made using PHPs PDO method.
$para = "SHOW COLUMNS FROM Unit_parameters";
$table_fields = $currentDB->query($para);
foreach($table_fields as $field)
{
    echo $field["Field"] . " "; // The space and break are to make it
    echo $field["Type"] . "<br />";  // so that it is not all on one line
}                                    // in my browser and run together.
$currentDB = NULL;

我做错了什么?我已经搜索了Stackoverflow并找到了一些程序来获得我想要的东西,除了它们使用的是PHP网站声明的方法&#34; Depreciated&#34;。我非常倾向于不使用折旧方法,所以我不会在以后的PHP版本中删除这些方法时重写我的网站。

同样,任何援助都会非常感激。

提前谢谢你 沃尔特威廉姆斯

我使用的是PHP 5.4,Apache 2.2和mysql 5.5

2 个答案:

答案 0 :(得分:0)

试试这个,所以你不必依赖隐式语句迭代器。为方便查询,它可能会被搞砸。

$q = $currentDB->query($para);
while ($field = $q->fetch())
{
    echo $field["Field"] . "&nbsp;"; // The space and break are to make it
    echo $field["Type"] . "<br />";  // so that it is not all on one line
}                 

另外,我建议您使用MySQL information_schema pseudo-tables来检索此类信息。与简单SHOW COLUMNS便捷查询相比,您可以更好地控制结果。例如,尝试这个SQL语句。

SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
  FROM information_schema.COLUMNS   
 WHERE TABLE_SCHEMA = DATABASE()
   AND TABLE_NAME = 'Unit_parameters'
 ORDER BY ORDINAL_POSITION

答案 1 :(得分:-1)

$currentDB =& connectToDB();  // Connection is made using PHPs PDO method.
$para = "SHOW COLUMNS FROM Unit_parameters";
$res=mysql_query("show columns from emp1");
while($row=mysql_fetch_assoc($res))
{
    echo $row["Field"] . "&nbsp;"; // The space and break are to make it
    echo $row["Type"] . "<br />";  // so that it is not all on one line
}