跳转到主要内容
你行网

Main navigation

  • 首页
  • Drupal
  • 编程与开发
  • 数据库
  • 操作系统与应用
  • 服务器与运维
  • 社区
User account menu
  • 登录

面包屑

  1. 首页

在PHP中判断数据库是否存在并新建数据库

由 hrs, 21 七月, 2025

以下是一个完整的PHP示例,它会检查数据库是否存在,然后根据情况创建数据库并给出明确的提示信息:

<?php
// 数据库连接配置
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "aasql"; // 要检查/创建的数据库名
try {
   // 创建连接(不指定数据库名)
   $conn = new PDO("mysql:host=$servername", $username, $password);
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   
   // 检查数据库是否存在
   $stmt = $conn->query("SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '$dbname'");
   $databaseExists = $stmt->fetchColumn();
   
   if ($databaseExists) {
       echo "数据库 '$dbname' 已存在,无需创建。";
   } else {
       // 创建数据库
       $conn->exec("CREATE DATABASE `$dbname`");
       echo "数据库 '$dbname' 创建成功!";
       
       // 可选:设置字符集
       // $conn->exec("CREATE DATABASE `$dbname` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
   }
} catch(PDOException $e) {
   echo "操作失败: " . $e->getMessage();
} finally {
   // 关闭连接
   $conn = null;
}
?>

代码说明

连接数据库:使用PDO连接到MySQL服务器(不指定具体数据库)

检查数据库存在:

查询information_schema.SCHEMATA系统表

使用fetchColumn()检查是否存在指定数据库

创建数据库:

如果不存在则创建

使用反引号包裹数据库名以避免关键字冲突

错误处理:

使用try-catch捕获可能的异常

提供明确的错误信息

输出提示:

数据库已存在时给出提示

新建成功时给出成功消息

安全增强版

为了防止SQL注入,可以使用参数化查询:

// 检查数据库存在(参数化查询)
$stmt = $conn->prepare("SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = ?");
$stmt->execute([$dbname]);
$databaseExists = $stmt->fetchColumn();

完整功能扩展版

<?php
function createDatabaseIfNotExists($servername, $username, $password, $dbname, $charset = 'utf8mb4', $collation = 'utf8mb4_unicode_ci') {
   try {
       $conn = new PDO("mysql:host=$servername", $username, $password);
       $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
       
       $stmt = $conn->prepare("SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = ?");
       $stmt->execute([$dbname]);
       
       if ($stmt->fetchColumn()) {
           return ["status" => "exists", "message" => "数据库 '$dbname' 已存在"];
       } else {
           $sql = "CREATE DATABASE `$dbname` CHARACTER SET $charset COLLATE $collation";
           $conn->exec($sql);
           return ["status" => "created", "message" => "数据库 '$dbname' 创建成功"];
       }
   } catch(PDOException $e) {
       return ["status" => "error", "message" => "操作失败: " . $e->getMessage()];
   } finally {
       $conn = null;
   }
}
// 使用示例
$result = createDatabaseIfNotExists("localhost", "root", "password", "aasql");
echo $result['message'];
?>

这个解决方案提供了清晰的提示信息,安全地检查数据库是否存在,并根据情况创建数据库。您可以根据实际需求调整字符集和排序规则等参数。

  • 登录或注册以发表评论
  • 37 次浏览
内容类型分类
数据库
文章归类
关系型数据库

文章标签

  • Mysql

评论

最新文章

  • 内容审核通知 content_moderation_notifications 模块简介
  • 调度程序 scheduler 模块简介
  • 工作流当中的草稿,已发布,很好理解,已归档是怎么理解。
  • 你行网 https://www.dwoke.com seo 关键词
  • brew 是什么命令
  • drupal 9 或 drpal 10 国内内容分享模块 Will Nice social share
  • Views Slideshow - Views Vanilla JavaScript Slideshow (VVJS) 简介和安装方法
  • drupal 11 安装statistics 统计模块
  • drupal11 扩展中找不到Statistics模块
  • drupal11 设置中的“总结摘要”和“切边的” 有什么区别

标签云

adsenseAIapacheaptbadblocksbreadcrumbbrewcentoscertbotckeditorcommandcomposercookiecsharpCSScurlC语言DDEVdiffdnsdockerDreamweaverDrupaldrupal 7drupal 8drupal 9drupal10drupal 11drushExcelfirewalldfirmwareflameshotformgimpgitgzipHTMLHTML5httpdhttp验证inputipjavaJavaScriptJavaSrciptkernelKVMLinuxmavenmbstringmod_expires 模块Mysqlnerdtreenetstatnetworknginxnpmpasswordphpphpmyadminphp扩展RFIDRSSselinuxSEOsharesimple_adsensesshsslStatisticssuperfishsurroundtagcloudstitleubuntuuploadprogressvimVPNVUEWireGuardwpsxdebugyoutubeyumzip主题(theme)二进制五笔分类术语压缩解压哈希值声音字段密码工作流快捷键摄影权限果树种植标签优化模块(module)源地址版本号电子秤电脑基础电脑技巧短信验证端口简介算法网站备份网站运营翻译英语表单视图(views)计算机基础赚钱超五类线网线邮件验证重定向重定向,301错误颜色

相关文章

  • information_schema.SCHEMATA 详解
  • MySQL 验证数据库是否存在的方法
  • MySQL 中常见的数据类型及其使用范围、大小和默认值
  • MySQL 关键字及其作用
  • 在mysql 数据库中,什么是启用外键约束
  • PDO 和 MySQLi 连接数据库的区别
  • 在终端输入mysql命令回车后不能修改的问题
  • 创建用户信息表的SQL语句解释
  • 如何查看mysql 端口命令
  • phpmysql 在登录后显示“使用配置文件中定义的控制用户连接失败”问题的解决方法
RSS源

关于我们

  • 你行网简介
  • 关于我们
  • 版权声明

网站相关

  • 社区论坛
  • 网址导航
  • 网站地图
  • 联系我们

友情链接

  • 英文学习

友情链接2

  • drupal 大学
  • 水滴间
  • 爱码网
  • Apache

友情链接3

  • MySQL
  • php
  • drupalcode

友情链接4

  • Drupal 中国
  • Drupal 老葛
  • 宁浩网
  • drupal 台湾
Copyright © 2019 - 2021 你行网 版权所有  粤ICP备19072650号-1