Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从空的MySQL查询结果中检索列名_Php_Mysql - Fatal编程技术网

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();