如何获取sql查询中涉及的表的所有名称?

时间:2017-12-01 12:23:48

标签: php sql

例如:

我有这个问题:

SELECT first_name
FROM users
    INNER JOIN roles ON roles.id = users.id_roles
WHERE roles.name = 'admin';

我需要一个Array,其中包含查询中使用的表的名称,如下所示:

['users','roles'];

1 个答案:

答案 0 :(得分:3)

我认为使用正则表达式会很困难 - 除非您知道您的查询始终遵循相同的标准。这是使用EXPLAIN的选项。

$tables = [];
$query = "EXPLAIN SELECT first_name FROM users INNER JOIN roles ON roles.id = users.id_rolesWHERE roles.name = 'admin'";
$q = mysqli_query($link, $query);
while($r = mysqli_fetch_assoc($q)) {
    $tables[] = $r['table'];
}
print_r(array_unique($tables));