插件窝 干货文章 LNMP中PHP如何连接数据库

LNMP中PHP如何连接数据库

连接 数据库 PHP MySQL 734    来源:    2025-05-09

LNMP环境中PHP连接数据库的方法

在LNMP(Linux + Nginx + MySQL + PHP)环境中,PHP连接MySQL数据库主要有以下几种方式:

1. 使用MySQLi扩展

<?php
$servername = "localhost";
$username = "数据库用户名";
$password = "数据库密码";
$dbname = "数据库名";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "连接成功";

// 执行查询等操作...

// 关闭连接
$conn->close();
?>

2. 使用PDO(PHP Data Objects)

<?php
$servername = "localhost";
$username = "数据库用户名";
$password = "数据库密码";
$dbname = "数据库名";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // 设置 PDO 错误模式为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "连接成功"; 
}
catch(PDOException $e) {
    echo "连接失败: " . $e->getMessage();
}

// 执行查询等操作...

// 关闭连接
$conn = null;
?>

3. 使用传统的mysql_*函数(已弃用,不推荐)

<?php
$conn = mysql_connect("localhost", "数据库用户名", "数据库密码");
if (!$conn) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_select_db("数据库名", $conn);

// 执行查询等操作...

// 关闭连接
mysql_close($conn);
?>

最佳实践建议

  1. 推荐使用PDO:因为它支持多种数据库,且提供了预处理语句功能,能有效防止SQL注入
  2. 配置数据库连接参数:建议将数据库连接参数存储在配置文件中,而不是硬编码在代码中
  3. 错误处理:始终检查连接是否成功并处理可能的错误
  4. 安全考虑:使用预处理语句来防止SQL注入攻击
  5. 连接池:对于高并发应用,考虑使用连接池技术

常见问题排查

  1. 连接失败

    • 检查MySQL服务是否运行
    • 确认用户名密码是否正确
    • 检查MySQL是否允许远程连接(如果需要)
    • 检查防火墙设置
  2. PHP扩展未安装

    • 确保已安装php-mysql或php-mysqli扩展
    • 对于PDO,确保已安装php-pdo和php-pdo-mysql扩展
  3. 权限问题

    • 确保数据库用户有访问指定数据库的权限

在LNMP环境中,通常这些扩展已经默认安装,如果没有,可以使用以下命令安装:

# 对于MySQLi
sudo apt-get install php-mysqli

# 对于PDO
sudo apt-get install php-pdo php-pdo-mysql

安装后需要重启PHP-FPM服务:

sudo service php-fpm restart