我试图找到一种方法来获取使用PHP在MySQL查询中返回的字段引用的所有表的列表。我知道EXPLAIN提供了表信息,但如果使用了表,则返回表别名。
即。 EXPLAIN将返回" tablea"," tableb"和"测试"从:
SELECT test.* FROM t1
JOIN t2 ON t2.id = t1.id
JOIN alias AS test ON test.eid = t2.eid
但是,在上面的示例中,我只想获得"别名"。
通过简单的查询,我可以查询字符串并提取信息,但考虑到子查询,字段别名和可能包含的各种连接时,这会非常复杂。
有一种简单的方法吗? 如果没有,我将不胜感激如何做到这一点!
答案 0 :(得分:1)
你真的不能做你在纯SQL中所要求的。
为什么不呢?从概念上讲,SQL SELECT查询的工作方式是根据其他表(虚拟和物理)和视图的内容声明新的虚拟表。因此,当您的SQL Server软件提供结果集时,它会显示您的查询的虚拟表。该虚拟表的元数据(列名称等)表达了查询的意图,包括为表分配别名。
答案 1 :(得分:-1)
这是在文件中生成表的简单方法:
<?php
//ENTER THE RELEVANT INFO BELOW
$mysqlDatabaseName ='db123456789';
$mysqlUserName ='dbo123456789';
$mysqlPassword ='myPassword';
$mysqlHostName ='db1234.perfora.net';
$mysqlExportPath ='chooseFilenameForBackup.sql';
//DO NOT EDIT BELOW THIS LINE
//Export the tables and output the status to the page
$command='mysqldump --opt -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' > ~/' .$mysqlExportPath;
exec($command,$output=array(),$worked);
switch($worked){
case 0:
echo 'Database <b>' .$mysqlDatabaseName .'</b> successfully exported to <b>~/' .$mysqlExportPath .'</b>';
break;
case 1:
echo 'There was a warning during the export of <b>' .$mysqlDatabaseName .'</b> to <b>~/' .$mysqlExportPath .'</b>';
break;
case 2:
echo 'There was an error during export. Please check your values:<br/><br/><table><tr><td>MySQL Database Name:</td><td><b>' .$mysqlDatabaseName .'</b></td></tr><tr><td>MySQL User Name:</td><td><b>' .$mysqlUserName .'</b></td></tr><tr><td>MySQL Password:</td><td><b>NOTSHOWN</b></td></tr><tr><td>MySQL Host Name:</td><td><b>' .$mysqlHostName .'</b></td></tr></table>';
break;
}
?>
//注意:这不是我的代码,但我测试了它并且运行良好。