祝大家节日快乐
我是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
答案 0 :(得分:0)
试试这个,所以你不必依赖隐式语句迭代器。为方便查询,它可能会被搞砸。
$q = $currentDB->query($para);
while ($field = $q->fetch())
{
echo $field["Field"] . " "; // 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"] . " "; // The space and break are to make it
echo $row["Type"] . "<br />"; // so that it is not all on one line
}