如何使用PDO获取PHP中的MySQL数据库列表?
我想知道如何在PHP中使用PDO获取MySQL数据库列表,而无需先连接到数据库(我的意思是dsn中没有dbname)?如何使用PDO获取PHP中的MySQL数据库列表?
通常我使用函数mysql_list_dbs(),但我不再使用这种方式的mysql。
您可以使用
show databases
或在INFORMATION_SCHEMA查询:
select schema_name from information_schema.schemata
是的,我知道那个查询,但是我的dsn会是什么?我想从PHP – taabouzeid 2011-04-23 19:11:38
内部做到,恐怕Eli已经回答了你。 – 2011-04-23 19:19:12
@ta,你实际上不需要*指定建立到MySQL的连接时要连接的数据库。其他一些数据库引擎不够宽容。连接后,您可以发出'USE'命令切换到您选择的数据库。另外@nick,'information_schema'为+1 – Charles 2011-04-24 02:21:03
在PHP版本5.4.0,您可以使用mysql_list_dbs()
命令:
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$db_list = mysql_list_dbs($link);
while ($row = mysql_fetch_object($db_list))
{
echo $row->Database . "\n";
}
这是2015年,不要使用mysql_ *函数 – 2015-04-20 10:27:08
感谢尼克rulez 。 我做的DB上市的例子:
$user = 'root';
$pass = 'root';
$server = 'localhost';
$dbh = new PDO("mysql:host=$server", $user, $pass);
$dbs = $dbh->query('SHOW DATABASES');
while(($db = $dbs->fetchColumn(0)) !== false)
{
echo $db.'<br>';
}
另一种方法类似于猎鹰的:
此脚本使用的foreach,而不是同时和打印,而不是回音的分贝名称和休息标签被设置为它将用于XML。它还使用关联属性(列名称)而不是返回行中列的数组索引来显示所需的结果。
这假定您已正确设置了PDO连接,并且= $ dbconn。在示例中,多次使用$ db而不是$ dbconn。
$stmt ="SHOW DATABASES";
foreach($dbconn->query($stmt) as $row){
print $row['Database'];echo"<br />";
}
try{
$DBH = new PDO("mysql:host=localhost", "root", "");
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$DBH->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}catch(PDOException $e) {
echo "Fail";
}
$rs = $dbo->query("SHOW DATABASES");
while ($h = $rs->fetch(PDO::FETCH_NUM)) {
echo $r[0]."<br>";
}
你可以用'显示databases'喜欢提到@nick rulez;但是您仍然需要至少登录到数据库服务器并创建连接。 – Eli 2011-04-23 19:01:05