当前位置:首页 > 行业动态 > 正文

html用php连接数据库连接

使用PHP的mysqli或PDO扩展实现HTML与数据库交互:通过mysqli_connect()或new PDO()建立连接,编写SQL语句操作数据,配合html表单接收参数,执行后用fetch处理结果集,记得用try-catch处理异常并释放

数据库配置说明

使用 PHP 连接数据库前,需确保已创建数据库并获取连接信息,以下是典型的数据库配置参数:

参数 说明 示例值
主机名 数据库服务器地址(本地为localhost 0.0.1
用户名 数据库登录账号 root
密码 数据库登录密码 password123
数据库名 需连接的数据库名称 test_db
端口号 MySQL默认端口为3306 3306

PHP连接数据库的步骤

使用 PDO 扩展连接数据库

优势:支持多种数据库(如 MySQL、PostgreSQL)、安全性高、支持预处理语句。

<?php
// 数据库配置
$host = '127.0.0.1';
$dbname = 'test_db';
$username = 'root';
$password = 'password123';
$port = 3306;
try {
    // DSN(数据源名称)格式:mysql:host=地址;port=端口;dbname=数据库名
    $dsn = "mysql:host=$host;port=$port;dbname=$dbname";
    // 创建 PDO 实例并连接数据库
    $pdo = new PDO($dsn, $username, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // 启用异常模式
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC // 返回关联数组
    ]);
    echo "数据库连接成功!";
} catch (PDOException $e) {
    // 捕获连接错误
    die("数据库连接失败:" . $e->getMessage());
}
?>

使用 MySQLi 扩展连接数据库

优势:专为 MySQL 优化,性能较好。

<?php
// 数据库配置
$host = '127.0.0.1';
$dbname = 'test_db';
$username = 'root';
$password = 'password123';
$port = 3306;
// 创建 MySQLi 对象并连接数据库
$mysqli = new MySQLi($host, $username, $password, $dbname, $port);
// 检查连接是否成功
if ($mysqli->connect_error) {
    die("数据库连接失败:" . $mysqli->connect_error);
} else {
    echo "数据库连接成功!";
}
?>

执行 SQL 查询与结果处理

示例:查询用户表数据

<?php
// 假设已通过 PDO 或 MySQLi 连接数据库(以 PDO 为例)
$sql = "SELECT  FROM users"; // SQL 语句
// 执行查询
$stmt = $pdo->query($sql);
// 处理结果集
while ($row = $stmt->fetch()) {
    // 输出每行数据(关联数组形式)
    echo "ID: {$row['id']}, 姓名: {$row['name']}<br>";
}
?>

常见错误与解决方案

问题 原因 解决方案
“无法连接数据库” 配置参数错误、数据库服务未启动 检查主机名、端口、用户名、密码
“未定义的 PDO 驱动” 未安装或启用 PDO 扩展 php.ini 中启用 pdo_mysql
“SQL 语法错误” SQL 语句书写错误 检查 SQL 语法或使用预处理语句

注意事项

  1. 安全性:避免在代码中硬编码密码,可使用环境变量或配置文件存储敏感信息。
  2. 字符编码:设置数据库和 PHP 的字符编码一致(如 utf8mb4),避免中文乱码。
  3. 关闭连接:操作完成后,及时关闭数据库连接(如 $pdo = null;$mysqli->close();)。

相关问题与解答

问题 1:PDO 和 MySQLi 如何选择?

解答

  • 若需支持多种数据库(如 PostgreSQL、SQLite),优先选择 PDO
  • 若仅针对 MySQL 且追求性能,可选择 MySQLi
  • PDO 提供统一的接口,适合复杂项目;MySQLi 对 MySQL 特有功能支持更好。

问题 2:如何防止 SQL 注入攻击?

解答

  • 使用预处理语句:通过绑定参数而非直接拼接 SQL。
    // PDO 示例
    $stmt = $pdo->prepare("SELECT  FROM users WHERE id = ?");
    $stmt->execute([$id]);
  • 验证用户输入:对输入数据进行类型、长度、格式检查。
  • 最小权限原则:数据库账号仅授予必要权限(如只读
0