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

html通过php连接数据库

通过PHP的mysqli或PDO扩展实现HTML与数据库交互:1. 使用$conn=new mysqli()创建数据库连接;2. 在HTML表单中设置name属性接收用户输入;3. 用$_POST获取表单数据后,通过$stmt=$conn->prepare()进行预处理;4. 执行$stmt->execute()完成数据插入/查询;5. 用htmlspecialchars()输出数据时转义特殊字符,防范X

环境配置

在开始之前,需要确保本地环境已安装以下组件:

  • Web服务器:如Apache或Nginx
  • PHP:版本7.0及以上
  • 数据库:如MySQL/MariaDB
  • 集成环境(可选):XAMPP、WAMP或MAMP

数据库连接步骤

创建数据库和表

假设使用MySQL,先创建一个数据库和测试表:

html通过php连接数据库  第1张

CREATE DATABASE test_db;
USE test_db;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(50)
);
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');

PHP连接数据库

方法1:使用PDO(推荐)

<?php
$host = 'localhost';
$dbname = 'test_db';
$username = 'root';
$password = ''; // 根据实际设置
try {
    $dsn = "mysql:host=$host;dbname=$dbname;charset=utf8";
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "数据库连接成功";
} catch (PDOException $e) {
    die("连接失败: " . $e->getMessage());
}
?>

方法2:使用mysqli(面向过程)

<?php
$link = mysqli_connect('localhost', 'root', '', 'test_db');
if (!$link) {
    die('连接错误: ' . mysqli_connect_error());
}
echo '数据库连接成功';
mysqli_close($link);
?>

数据库操作与HTML结合

从数据库获取数据并显示

<?php
// 连接数据库(使用PDO)
$pdo = new PDO("mysql:host=localhost;dbname=test_db", 'root', '');
$query = $pdo->query("SELECT  FROM users");
$users = $query->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html>
<head><title>用户列表</title></head>
<body>
    <h2>用户列表</h2>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>邮箱</th>
        </tr>
        <?php foreach ($users as $user): ?>
        <tr>
            <td><?= htmlspecialchars($user['id']) ?></td>
            <td><?= htmlspecialchars($user['name']) ?></td>
            <td><?= htmlspecialchars($user['email']) ?></td>
        </tr>
        <?php endforeach; ?>
    </table>
</body>
</html>

表单提交与数据插入

HTML表单页面(form.html)

<!DOCTYPE html>
<html>
<head><title>添加用户</title></head>
<body>
    <h2>添加用户</h2>
    <form action="insert.php" method="post">
        姓名: <input type="text" name="name" required><br>
        邮箱: <input type="email" name="email" required><br>
        <button type="submit">提交</button>
    </form>
</body>
</html>

处理表单并插入数据(insert.php)

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = $_POST['name'];
    $email = $_POST['email'];
    try {
        $pdo = new PDO("mysql:host=localhost;dbname=test_db", 'root', '');
        $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
        $stmt->execute([$name, $email]);
        echo "数据插入成功";
    } catch (PDOException $e) {
        echo "插入失败: " . $e->getMessage();
    }
} else {
    echo "非规请求";
}
?>

安全性注意事项

风险类型 解决方案
SQL注入 使用预处理语句(如$stmt->prepare())和参数绑定(如$stmt->execute([...]))。
跨站脚本(XSS) 输出时使用htmlspecialchars()转义特殊字符。
密码存储 使用password_hash()加密密码,password_verify()验证。

常见问题与解答

问题1:数据库连接失败怎么办?

解答

  • 检查数据库服务是否启动(如MySQL服务)。
  • 确认用户名、密码、数据库名是否正确。
  • 查看错误信息:PDO会抛出异常,mysqli可用mysqli_connect_error()获取错误。

问题2:如何防止中文乱码?

解答

  • 在DSN中指定字符集:charset=utf8(PDO)或set_charset('utf8')(mysqli)。
  • HTML页面声明<meta charset="UTF-8">
  • 确保数据库和表的字符集为`utf8
0