有没有办法从查询字符串中获取所有使用的MySQL表名?
答案 0 :(得分:3)
使用explain
可以为您提供列出表的结果集,但是您不能使用表别名(它返回别名)并且我没有使用所有类型的查询对其进行测试,所以我不知道如果它是100%可靠的。
explain select * from table1
inner join table2 on table2.fk_id = table1.pk_id;
编辑:我应该说,“100%可靠为您的目的。”
答案 1 :(得分:2)
使用这个mysql语法
SHOW [FULL] TABLES [{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
例如:
SHOW TABLES from _TABLE_NAME_
答案 2 :(得分:1)
您可以通过在查询前面加上explain:
来获取查询字符串中所有已使用的表EXPLAIN SELECT ..... FROM ... JOIN .....
答案 3 :(得分:0)
有mysql_field_table(),补充mysql_field_name()
它们是位置函数,所以如果你想要结果集中第3个字段的表,你需要
$select = "SELECT A.x, B.y, C.z FROM A,B,C ...";
$table = mysql_field_table($result, 2); // 0-based positions, returns C