如何在PHP中仅循环前缀为solarsystem的MySQL数据库名并生成下拉列表
实现仅展示以solarsystem为前缀的MySQL数据库下拉列表
嘿,这个需求其实挺容易实现的,我给你梳理下具体步骤,保证能搞定:
1. 先搞定MySQL数据库连接
首先得确保PHP能连上你的MySQL,这里我用PDO来写,比mysqli更灵活也更安全:
<?php // 替换成你的数据库连接信息 $host = 'localhost'; $dbUser = 'your_db_username'; $dbPass = 'your_db_password'; try { $pdo = new PDO("mysql:host=$host", $dbUser, $dbPass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { die("连接失败啦: " . $e->getMessage()); } ?>
2. 获取数据库并过滤前缀
接下来我们先拿到所有数据库,然后筛选出以solarsystem开头的:
<?php // 查询所有数据库 $stmt = $pdo->query("SHOW DATABASES"); $allDatabases = $stmt->fetchAll(PDO::FETCH_COLUMN); // 过滤出符合要求的数据库 $filteredDatabases = []; foreach ($allDatabases as $dbName) { // PHP 8.0及以上可以用这个更直观的函数 if (str_starts_with($dbName, 'solarsystem')) { $filteredDatabases[] = $dbName; } // 如果你用的PHP版本低于8.0,就换成下面这段: // if (substr($dbName, 0, 11) === 'solarsystem') { // $filteredDatabases[] = $dbName; // } } ?>
3. 渲染成下拉列表
最后把过滤后的列表转成HTML下拉框就行:
<select name="solar_db_select"> <?php foreach ($filteredDatabases as $db): ?> <!-- 一定要用htmlspecialchars转义,防止XSS攻击 --> <option value="<?= htmlspecialchars($db) ?>"><?= htmlspecialchars($db) ?></option> <?php endforeach; ?> </select>
几个要注意的小细节
- 别忘用
htmlspecialchars()转义输出的数据库名,这是防止XSS攻击的基础操作,不能偷懒。 - 要是你的PHP版本还停留在8.0以下,记得把
str_starts_with()换成substr()的写法,不然会报错。 - 确保你的数据库账号有
SHOW DATABASES的权限,不然根本拿不到数据库列表哦。
内容的提问来源于stack exchange,提问作者Dexter
相关产品推荐
相关产品推荐

