php数据库怎么进指定数据库的mysql_php选库连mysql法【步骤】

推荐使用mysqli或PDO连接MySQL;mysqli可在连接时第4参数指定库名,或用mysqli_select_db()切换;PDO通过DSN一步指定dbname更安全,且需加charset=utf8mb4防乱码。

php数据库怎么进指定数据库的mysql_php选库连mysql法【步骤】

mysqli_connect() 连接后必须用 mysqli_select_db() 或在连接时指定数据库名

PHP 7.0+ 已废弃 mysql_* 系列函数(如 mysql_connectmysql_select_db),直接调用会报 Fatal error: Uncaught Error: Call to undefined function mysql_connect()。现在唯一推荐的方式是使用 mysqliPDO

最简选库路径有两种:

  • 连接时直接在第 4 个参数传入数据库名:mysqli_connect($host, $user, $pass, $dbname)
  • 先连服务器(不指定库),再用 mysqli_select_db($connection, $dbname) 切换

注意:第 4 个参数是可选的,不填就只连 MySQL 服务,没默认库;此时若执行 SELECT * FROM user 会报错 No database selected

mysqli_select_db() 必须传 resource 或 mysqli 对象,不能只传数据库名

常见错误写法:mysqli_select_db("myapp_db") —— 缺少连接句柄,会警告 mysqli_select_db() expects exactly 2 parameters

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

正确做法:

  • 用面向对象风格:$mysqli = new mysqli($host, $user, $pass); $mysqli->select_db("myapp_db");
  • 用过程式风格:$conn = mysqli_connect($host, $user, $pass); mysqli_select_db($conn, "myapp_db");

如果连接失败,$connfalse,后续调用 mysqli_select_db(false, "xxx") 会触发警告。务必先检查连接是否成功。

Mulan AI

Mulan AI

画布式AI视频创作平台,轻松制作爆款视频

下载

PDO 方式更安全,推荐用 PDO::__construct() 一步指定数据库

比起 mysqli 分两步(连 + 选),PDO 在构造时就把数据库名嵌进 DSN 里,天然避免漏选库问题:

$dsn = "mysql:host=localhost;dbname=myapp_db;charset=utf8mb4";
$pdo = new PDO($dsn, $user, $pass, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);

关键点:

  • dbname=xxx 是 DSN 的一部分,不是额外参数
  • charset=utf8mb4 建议加上,避免中文乱码和 emoji 存储异常
  • 不加 dbname 也能连上 MySQL 服务,但后续所有查询都得带 database.table 全限定名,比如 SELECT * FROM myapp_db.users

连接失败或选库失败时,mysqli_connect_error() 和 mysqli_error() 返回不同信息

调试时容易混淆这两个函数:

  • mysqli_connect_error() 只在 mysqli_connect() 失败后有效,例如账号密码错、端口不通
  • mysqli_error($conn) 是针对已建立连接后的操作失败,比如 mysqli_select_db($conn, "nonexistent") 报错时才用它

典型调试片段:

$conn = mysqli_connect($host, $user, $pass);
if (!$conn) {
    die("连接失败:" . mysqli_connect_error()); // ← 这里用 mysqli_connect_error()
}
if (!mysqli_select_db($conn, "myapp_db")) {
    die("选库失败:" . mysqli_error($conn)); // ← 这里用 mysqli_error($conn)
}

漏掉这个区分,可能拿到空字符串或上一次错误残留,导致定位困难。

https://www.php.cn/faq/2030203.html

发表回复

Your email address will not be published. Required fields are marked *