用mysqli扩展连接MySQL
在日常开发中,比如做一个小型博客系统,最常用的方式就是使用PHP内置的mysqli扩展来连接MySQL。这种方式简单直接,适合大多数项目。
下面是一个基本的连接示例:
<?php
$host = 'localhost';
$username = 'root';
$password = '123456';
$database = 'blog';
$conn = new mysqli($host, $username, $password, $database);
if ($conn->connect_error) {
die('连接失败:' . $conn->connect_error);
}
echo '连接成功';
?>注意,如果数据库密码是空的,记得把$password设为空字符串。本地测试时很多人会忽略这点,导致连不上。
使用PDO连接更灵活
如果你打算以后换数据库,比如从MySQL换成SQLite,推荐用PDO。它支持多种数据库,写法也更规范。
下面是一个PDO连接MySQL的例子:
<?php
$host = 'localhost';
$database = 'blog';
$username = 'root';
$password = '123456';
try {
$pdo = new PDO("mysql:host=$host;dbname=$database", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo '连接成功';
} catch (PDOException $e) {
echo '连接失败:' . $e->getMessage();
}
?>遇到“Class 'PDO' not found”这类错误,通常是PHP没开启PDO扩展。可以在php.ini里检查是否启用了extension=pdo_mysql这一行。
配置信息分离更安全
实际部署时,别把数据库密码直接写在代码里。可以单独建个config.php文件:
<?php
return [
'host' => 'localhost',
'username' => 'root',
'password' => '123456',
'database' => 'blog'
];
?>然后在主程序中引入:
<?php
$config = require 'config.php';
$conn = new mysqli($config['host'], $config['username'], $config['password'], $config['database']);
if ($conn->connect_error) {
die('连接失败:' . $conn->connect_error);
}
?>这样上传代码到GitHub时,把config.php加到.gitignore里,避免泄露密码。
本地环境常见问题
刚装好WAMP或XAMPP时,经常出现“Connection refused”错误。先确认MySQL服务有没有启动。Windows下可以按Ctrl+Shift+Esc打开任务管理器,看看mysql.exe进程在不在。
还有一个坑是端口被占用。默认是3306,如果装了其他软件(比如某些数据库工具),可能占用了端口。可以去my.ini里改端口号,或者关掉冲突的程序。