Php 从空的MySQL查询结果中检索列名
有没有办法检索不返回数据的查询的列名 我正在使用(有些)复杂的查询,例如:Php 从空的MySQL查询结果中检索列名,php,mysql,Php,Mysql,有没有办法检索不返回数据的查询的列名 我正在使用(有些)复杂的查询,例如: SELECT i.*, ic1.permalink as category_permalink, ic1.title as category_title, ic1.sid as category_sid, ic2.permalink as hook_category_permalink, ic2.title as hook_category_title, ic2
SELECT
i.*,
ic1.permalink as category_permalink,
ic1.title as category_title,
ic1.sid as category_sid,
ic2.permalink as hook_category_permalink,
ic2.title as hook_category_title,
ic2.sid as hook_category_sid
FROM item i
LEFT JOIN item_to_item_category itic ON i.sid = itic.item_sid
LEFT JOIN item_category ic1 ON ic1.sid = itic.item_category_sid
LEFT JOIN item_category ic2 ON ic1.hook = ic2.sid
WHERE i.uid = ''
LIMIT 0,1
此查询的结果将为空,因为其中i.uid=”“
。当没有结果时,有没有办法找到列名
请注意,我知道使用description
和select column_name from information_schema.columns where table_name='person'但是我需要一个更灵活的解决方案来适应这些多列查询
还请注意,我仍然使用原始的PHP MySQL扩展(因此没有MySQLi,也没有PDO)
有人吗?对于PDO,请尝试。对于mysqli,有,和。对于mysql,将其替换为PDO或mysqli。假设您是从PHP调用查询。您甚至可以使用emtpy查询调用。这里是一个基于mysqli的简单类。此方法也适用于空表。当然,根据需要添加您自己的错误检查。
成功将从$table返回列名称的数字索引数组。
失败或非字符串输入将返回FALSE。
要使用,请首先像往常一样实例化数据库:
$mysql=newmysqlz($host、$user、$pass、$database)代码>
然后,调用该方法来检索列名:
$columns=$mysql->fetch_table_columns(“table_name_here”)代码>
根据您的表,生成的数组应为var_dump(),如下所示:
array(3) { [0]=> string(2) "id" [1]=> string(10) "first_name" [2]=> string(9) "last_name" }
数组(3){[0]=>string(2)“id”[1]=>string(10)“first_name”[2]=>string(9)“last_name”}
如果方法返回false(var_dump返回bool(false)
),您可以使用$mysqlz->error
检查当前错误。有关错误检查的更多信息,请参阅PHP mysqli手册。对于AdoDB,您可以使用:
$db->Execute("SELECT .......");
$colInfo = $res->FieldTypesArray();
输出类似于方法元列($table)
,但您可以在每个结果集上使用它,而不仅仅是在表(包括联接)上。
它也适用于空结果或空表
多亏了,
我在adoDBs mysql驱动程序中搜索“fetch_field()”后发现了这个函数:D我想我知道您想要实现什么,但是您能编辑您的问题以包含一些上下文吗?为什么您需要知道一个不返回数据的查询的列标题?至少,请说明您使用的是哪个DB扩展。我需要这样做的原因很长。这是我创建的后台办公室。DB扩展只是传统的PHP MySQL扩展。看来是时候升级了。请用要求的信息更新问题。一般来说,回应澄清的请求时,更新你的帖子,而不是回复评论。首先,一个问题不需要阅读评论就可以理解。另一方面,QA&site也是如此,而不是论坛,评论不适合(也不适合)讨论。谢谢你的回答。是时候升级到MySQLi了@maartenmachiels:PDO有一个更好的界面。有关一些示例,请参见的答案。
$db->Execute("SELECT .......");
$colInfo = $res->FieldTypesArray();