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

html用php链接数据库

使用PHP的MySQLi或PDO扩展,通过$conn=new mysqli(…)建立数据库连接,配合HTML表单提交数据后,用$stmt->prepare()执行带参数

环境准备

使用PHP连接数据库需要以下环境支持:

html用php链接数据库  第1张

  1. Web服务器:如Apache、Nginx
  2. PHP环境:建议PHP 7.0+版本
  3. 数据库服务器:如MySQL、MariaDB
  4. 数据库驱动:PHP扩展(如mysqliPDO

数据库连接步骤

创建数据库和表

-创建数据库
CREATE DATABASE test_db;
-使用数据库
USE test_db;
-创建表
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

PHP连接数据库(使用mysqli扩展)

<?php
// 数据库配置信息
$host = 'localhost';     // 数据库服务器地址
$username = 'root';      // 数据库用户名
$password = '123456';    // 数据库密码
$dbname = 'test_db';     // 数据库名称
$port = 3306;            // 端口号(默认3306)
// 创建连接
$conn = new mysqli($host, $username, $password, $dbname, $port);
// 检查连接是否成功
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "连接成功!";
?>

执行SQL查询

查询数据(SELECT)

<?php
// 连接数据库(省略重复代码)
$conn = new mysqli($host, $username, $password, $dbname, $port);
// 执行SQL查询
$sql = "SELECT  FROM users";
$result = $conn->query($sql);
// 处理结果集
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . " 用户名: " . $row["username"] . "<br>";
    }
} else {
    echo "暂无数据";
}
$conn->close();
?>

关闭数据库连接

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

安全实践:防止SQL注入

使用预处理语句(Prepared Statements)

<?php
// 连接数据库(省略重复代码)
$conn = new mysqli($host, $username, $password, $dbname, $port);
// 预处理SQL语句
$stmt = $conn->prepare("SELECT  FROM users WHERE id = ?");
$stmt->bind_param("i", $userId); // 绑定参数类型(i: 整数)
// 设置参数值
$userId = 1;
$stmt->execute();
// 获取结果
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    echo "用户名: " . $row["username"];
}
// 释放资源
$stmt->close();
$conn->close();
?>

常用函数与方法对比表

功能 mysqli扩展 PDO扩展
创建连接 new mysqli() new PDO()
执行查询 $conn->query() $conn->query()
预处理语句 $conn->prepare() $conn->prepare()
绑定参数 bind_param() 命名占位符(如:id
错误处理 $conn->error PDO::ERRMODE_EXCEPTION

相关问题与解答

问题1:如何选择mysqliPDO

解答

  • mysqli:专为MySQL设计,性能较高,适合单一MySQL数据库项目。
  • PDO:支持多种数据库(如PostgreSQL、SQLite),提供统一接口,适合需要跨数据库的项目。
    建议:若项目仅用MySQL,优先mysqli;若需兼容多数据库,选PDO

问题2:为什么使用预处理语句能防止SQL注入?

解答
预处理语句将SQL逻辑与参数分离,参数值通过绑定传递,而非直接拼接到SQL语句中,攻击者无法通过参数改动SQL结构(如' OR 1=1),从而有效防止

0