跳转到主要内容
你行网

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'];
?>

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

  • 登录或注册以发表评论
文章归类
数据库

文章标签

  • Mysql

评论

文章标签

CSS
Excel
ubuntu
php
五笔
vim
Linux
VPN
command
HTML
drupal 8
drupal 7
centos
composer
Mysql
drush
模块(module)
Drupal
JavaSrcipt
apache
drupal 9
英语
nerdtree
SEO
network
果树种植
surround
drupal10
主题(theme)
ssh
phpmyadmin
二进制
yum
权限
声音
ssl
selinux
HTML5
password
Dreamweaver
WireGuard
flameshot
翻译
颜色
uploadprogress
DDEV
firewalld
kernel
视图(views)
快捷键
邮件验证
gzip
xdebug
错误
电脑基础
ckeditor
C语言
简介
mbstring
源地址
certbot
php扩展
git
httpd
apt
电子秤
压缩解压
breadcrumb
表单
csharp
AI
短信验证
摄影
diff
superfish
重定向
网站备份
docker
drupal 11
tagclouds
java
版本号
RSS
adsense
电脑技巧
端口
simple_adsense
算法
youtube
JavaScript
cookie
KVM
badblocks
计算机基础
网站运营
RFID
VUE
zip
标签优化
gimp
form
dns
mod_expires 模块
赚钱
ip
http验证
curl
重定向,301
netstat
字段
maven
input
npm
nginx
哈希值
wps
更多

相关文章

  • 因权限问题导致drupal cms 无法正常安装,那么该如何解决这个问题
  • kvm虚拟机启动失败:default网络未激活
  • ubuntu 安装kvm 虚拟机
  • 匿名函数(Anonymous Functions)详解
  • foreach 是 PHP 循环语句使用方法
  • implode() 函数的定义和用法
  • Drupal 11 主题制作教程
  • 检查 Composer 是否为官方源
  • 在 Drupal 中权重(Weight)是怎样排序的
  • 解决 Drupal 主题缺失问题
RSS源

友情链接 网站地图 版权信息 联系我们 网址导航 社区

Copyright © 2019 - 2021 你行网 版权所有  粤ICP备19072650号