据我所知,有几种方法可以将MySQL中的数据库名称列表添加到php中的数组中:
//connect to database
$link = mysqli_connect(HOST, USERNAME, PASSWORD);
mysqli_select_db($link, DB_PRESENTATION_LAYER);
//1
$query = "SHOW DATABASES";
$databases = mysqli_query($link, $query);
$databases = mysqli_fetch_row($databases);
//2
$query = "SELECT `SCHEMA_NAME` FROM 'information_schema.SCHEMATA'";
$databases = mysqli_query($link, $query);
$databases = mysqli_fetch_row($databases);
//3 ( DEPRECATED as of PHP 5.4.0 )
$databases = mysql_list_dbs($link);
var_dump($databases);
当我做以上任何一件事时,我得到的是:
array (size=1)
0 => string 'information_schema' (length=18)
这是为什么? 另外,为什么php没有更新mysql_list_dbs()函数来使用mysqli?
的结论 的
对于其他试图获取数据库列表的人来说,这是我的功能(希望我可以从这个问题中挽救一些有用的东西)。
将'database'替换为您想要返回的数据库的前缀,或者将其删除以获取所有数据库。
public function get_database_list() {
$databases = array();
$query = "SELECT `schema_name` FROM information_schema.schemata WHERE schema_name LIKE 'database%'";
$result = mysqli_query($this -> link1, $query);
while($row = mysqli_fetch_array($result)) {
array_push($databases, $row['schema_name']);
}
return $databases;
}
答案 0 :(得分:2)
您只获取第一行结果,通常第一个数据库正好是information schema
。要列出所有这些,请尝试以下方法:
$list = array();
while($row = mysqli_fetch_row($databases)) {
$list[] = $row;
}
print_r($list);
答案 1 :(得分:2)
你应该做的是:
//connect to database
$link = mysqli_connect(HOST, USERNAME, PASSWORD);
mysqli_select_db($link, DB_PRESENTATION_LAYER);
//1
$query = "SHOW DATABASES";
$databases = mysqli_query($link, $query);
$arr = array();
while (($database = mysqli_fetch_row($databases))!=null)
{
$arr[] = $database;
}
var_dump($databases);