上一篇
html通过php连接数据库
- 行业动态
- 2025-04-29
- 4619
通过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,先创建一个数据库和测试表:
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