php怎么创建mysql数据库_php创建mysql数据库基础教程【步骤】

10次阅读

php中无法直接创建mysql数据库,需通过执行CREATE database sql语句实现;必须使用有CREATE权限的用户连接(不指定数据库名),并显式设置字符集与反引号包裹库名。

php怎么创建mysql数据库_php创建mysql数据库基础教程【步骤】

PHP 里不能直接创建 MySQL 数据库

这是最常被误解的一点:mysqlipdo 扩展本身不提供「建库」的专用函数,而是通过执行 CREATE DATABASE SQL 语句来实现。也就是说,你得先连上 MySQL 服务器(通常用 root 或有 CREATE 权限的账号),再发一条原生 SQL 命令。

mysqli_connect + mysqli_query 创建数据库

必须确保连接用户有 CREATE 权限,否则会报错 access denied for user ... to database 'xxx'(注意:不是说数据库不存在,而是没权限建)。

实操建议:

  • 不要在连接时指定数据库名(即 mysqli_connect($host, $user, $pass) 第四个参数留空)
  • 连接成功后,立即用 mysqli_query($conn, "CREATE DATABASE `mydb` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")
  • 务必用反引号包裹数据库名,避免关键字冲突(比如叫 ordergroup
  • 显式指定字符集和排序规则,否则可能默认为 latin1,后续存中文会乱码

PDO 方式更安全,但一样要手写 SQL

PDO 不提供 createDatabase() 这类封装方法,本质仍是执行 SQL。但它支持异常模式,更容易捕获建库失败原因。

立即学习PHP免费学习笔记(深入)”;

关键点:

  • 连接 DSN 中不要带 dbname=xxx,否则 PDO 会尝试连到一个不存在的库而报错
  • 开启异常模式:$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
  • 建库语句仍需手动执行:$pdo->exec("CREATE DATABASE `test_db`")
  • 如果数据库已存在,会抛出 SQLSTATE[HY000]: General Error: 1007 Can't create database 'xxx'; database exists,需自行 try/catch 处理

建库后立刻选中并建表?别跳步

刚执行 CREATE DATABASE 并不等于当前连接就自动切换过去了。很多新手紧接着调 mysqli_query($conn, "CREATE table ...") 却报错 No database selected

正确做法是:

  • 建库后,用 mysqli_select_db($conn, 'mydb') 切换(mysqli 方式)
  • 或重新用新数据库名创建 PDO 实例:new PDO("mysql:host=localhost;dbname=mydb;charset=utf8mb4", ...)
  • 也可以在建表语句里显式带上库名:CREATE TABLE `mydb`.`users` (...)

字符集不一致、权限不足、SQL 语法拼错——这三个是最常卡住的地方,尤其在 docker 或云数据库环境下,root 用户默认可能被禁用或限制建库权限。

text=ZqhQzanResources