执行CREATE DATABASE后仍报mysqli_sql_exception: Unknown database 'test_db'错误
问题分析
你遇到的致命错误根源是代码逻辑顺序错误:你在调用mysqli_connect时直接指定了不存在的test_db数据库,这一步会立即触发数据库不存在的异常,导致后续创建数据库的代码完全没有执行的机会。
修复方案
正确的流程应该是:
- 先连接到MySQL服务器(不指定目标数据库)
- 执行创建数据库的SQL语句
- 数据库创建成功后,再切换到该数据库(或重新连接时指定)
修正后的代码
<?php $servername = "localhost"; $username = "root"; $pwd = ""; $db = "test_db"; // 第一步:先连接MySQL服务器,不指定具体数据库 $conn = mysqli_connect($servername, $username, $pwd); if (!$conn) { die('连接服务器失败: ' . mysqli_connect_error()); } // 第二步:创建数据库 $sql = "CREATE DATABASE IF NOT EXISTS test_db"; if (mysqli_query($conn, $sql)) { echo "数据库创建成功<br>"; // 第三步:切换到刚创建的数据库 mysqli_select_db($conn, $db); } else { echo "创建数据库失败: " . mysqli_error($conn); } // 后续可以在这里执行针对test_db的操作 ?>
补充说明
CREATE DATABASE IF NOT EXISTS语句会确保只有当数据库不存在时才创建,避免重复创建的错误- 连接服务器后切换数据库可以用
mysqli_select_db,也可以销毁当前连接后,重新调用mysqli_connect并指定$db参数 - 确保你的MySQL账号(这里是root)有创建数据库的权限,如果权限不足也会导致创建失败
内容的提问来源于stack exchange,提问作者Bheki Fuzwayo
相关产品推荐
相关产品推荐

