18

如何从 mySql 中的多个数据库中选择所有表。我正在执行以下步骤但无法实现目标。

<?php
$a = "SHOW DATABASES";
$da = $wpdb->get_results($a);

foreach($da as $k){
echo '<pre>';
print_r ($k->Database);//prints all the available databases
echo '</pre>';
$nq = "USE $k->Database";//trying to select the individual database
$newda = $wpdb->get_results($nq);
$alld = "SELECT * FROM $k->Database";
$td = $wpdb->get_results($alld);
var_dump($td);//returns empty array
}
?>

请帮我

4

5 回答 5

36

使用INFORMATION_SCHEMA

select table_schema, table_name from information_schema.tables;
于 2010-06-12T07:33:28.457 回答
14

更好的是:

在一条 SQL 语句中显示所有数据库(内部 mysql 数据库除外)中的所有表。

SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema NOT IN ( 'information_schema', 'performance_schema', 'mysql' )
于 2013-06-01T21:08:19.070 回答
11

你不能做

SELECT * FROM database

但你可以

USE DATEBASE;
SHOW TABLES;

甚至更好:

SHOW TABLES IN database
于 2010-06-12T07:30:12.807 回答
1

我会这样做:

mysql -e "select table_schema, table_name from information_schema.tables;" | \
    grep -Pv '^(sys|performance_schema|TABLE_SCHEMA|mysql|information_schema)' | \
    perl -pe 's/\s+/./' | \
    sort -u
于 2019-01-10T21:49:48.737 回答
0

mysql -e'select table_schema, table_name from information_schema.tables;'

这取决于您是否有一个包含~/.my.cnf以下内容的文件:

[client]
user=ADMINUSER     ## set user, usually 'root' 
password=PASSWORD  ## set password
于 2017-05-28T16:59:47.153 回答