表单提交是将用户在网页上填写的数据通过HTTP请求发送到服务器的过程。MySQL数据库是一种关系型数据库管理系统,用于存储和管理数据。
原因:
解决方法:
$_POST
或$_GET
方法获取表单数据。try-catch
块捕获SQL语句执行过程中的异常,并输出错误信息。示例代码:
<?php
// 获取表单数据
$name = $_POST['name'];
$email = $_POST['email'];
// 数据库连接配置
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 插入数据
$sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
if ($conn->query($sql) === TRUE) {
echo "新记录插入成功";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
// 关闭连接
$conn->close();
?>
原因: 用户提交的恶意数据直接拼接到SQL语句中,导致数据库被非法操作。
解决方法: 使用预处理语句或参数化查询来防止SQL注入。
示例代码:
<?php
// 获取表单数据
$name = $_POST['name'];
$email = $_POST['email'];
// 数据库连接配置
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 预处理语句
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);
if ($stmt->execute()) {
echo "新记录插入成功";
} else {
echo "Error: " . $stmt->error;
}
// 关闭连接
$stmt->close();
$conn->close();
?>
领取专属 10元无门槛券
手把手带您无忧上云