通八洲科技

php怎么连接数据库_MySQL数据库连接的基础代码编写【说明】

日期:2026-01-01 00:00 / 作者:看不見的法師
推荐使用 PDO 或 mysqli 扩展连接 MySQL,mysql_connect() 在 PHP 7.0+ 已移除;PDO 需开启异常模式、密码特殊字符需 rawurlencode;mysqli 要显式设 utf8mb4 字符集;连接失败优先排查服务状态、用户权限、端口及扩展启用。

PHP 连接 MySQL 数据库,推荐直接使用 PDOmysqli 扩展,mysql_connect() 等旧函数在 PHP 7.0+ 已被彻底移除,强行用会报 Fatal error: Uncaught Error: Call to undefined function mysql_connect()

用 PDO 连接 MySQL(推荐)

PDO 是 PHP 官方推荐的数据库访问抽象层,支持预处理、多数据库切换、异常捕获,代码更健壮。

$host = '127.0.0.1';
$port = 3306;
$dbname = 'testdb';
$username = 'root';
$password = 'p@ss/w0rd';

// 注意:密码含特殊字符时要 urlencode
$encoded_password = rawurlencode($password);
$dsn = "mysql:host=$host;port=$port;dbname=$dbname;charset=utf8mb4";

try {
    $pdo = new PDO($dsn, $username, $encoded_password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES => false,
    ]);
} catch (PDOException $e) {
    die('连接失败:' . $e->getMessage());
}

用 mysqli 连接 MySQL(面向对象方式)

如果项目已大量使用 mysqli,优先选面向对象写法,避免过程式函数(如 mysqli_connect())带来的作用域和错误处理混乱。

$host = '127.0.0.1';
$port = 3306;
$dbname = 'testdb';
$username = 'root';
$password = 'p@ss/w0rd';

$mysqli = new mysqli($host, $username, $password, $dbname, $port);

if ($mysqli->connect_error) {
    die('连接失败:' . $mysqli->connect_error);
}

// 必须设置,且是 utf8mb4,不是 utf8
$mysqli->set_charset('utf8mb4');

常见连接失败原因与排查点

连不上不是代码写错,往往是环境或权限配置没到位。以下几项比改代码更关键:

真正卡住的地方,往往不在 new PDO() 那一行,而在 MySQL 的 user 表里少了一条 'appuser'@'127.0.0.1' 记录,或者 php.ini 里忘了开扩展。写完连接代码后,先盯住错误信息里的关键词,再查对应环节。