連接 MySQL 伺服器,獲取當前用戶權限下可見的所有資料庫列表,並以 HTML 清單形式輸出。
define('NL', "\n");
define('TB', ' ');
$conn = @mysql_connect('localhost', 'username', 'password')
or die(mysql_errno().': '.mysql_error().NL);
$result = mysql_list_dbs($conn);
echo ''.NL;
// 三種遍歷方式任選其一
// 方式 1: mysql_fetch_object()
while ($row = mysql_fetch_object($result)) {
echo TB.'- '.$row->Database.'
'.NL;
}
// 方式 2: mysql_fetch_row()
while ($row = mysql_fetch_row($result)) {
echo TB.'- '.$row[0].'
'.NL;
}
// 方式 3: mysql_fetch_assoc()
while ($row = mysql_fetch_assoc($result)) {
echo TB.'- '.$row['Database'].'
'.NL;
}
echo '
'.NL;
mysql_free_result($result);
mysql_close($conn);
PHP 5.5.0 棄用,PHP 7.0.0 完全移除。 必須遷移至 mysqli 或 PDO。
function listDatabases(PDO $pdo): array {
$stmt = $pdo->query('SHOW DATABASES');
return $stmt->fetchAll(PDO::FETCH_COLUMN);
}
// 使用範例
try {
$pdo = new PDO('mysql:host=localhost;charset=utf8mb4', 'user', 'pass', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
$dbs = listDatabases($pdo);
echo '';
foreach ($dbs as $db) {
echo "- " . htmlspecialchars($db) . "
";
}
echo '
';
} catch (PDOException $e) {
error_log($e->getMessage());
echo "Database connection failed.";
}
$mysqli = new mysqli('localhost', 'user', 'pass');
if ($mysqli->connect_errno) die('Connect failed: '.$mysqli->connect_error);
$result = $mysqli->query('SHOW DATABASES');
while ($row = $result->fetch_row()) {
echo "" . htmlspecialchars($row[0]) . " ";
}
$result->free();
$mysqli->close();
SHOW DATABASES 權限:決定可見哪些資料庫information_schema 通常始終可見