php - 数据未插入数据库,但我收到消息新记录输入成功
问题描述
<?php
error_reporting(E_ALL);
$username = $_POST['username'];
$email_id = $_POST['email_id'];
$phone_no = $_POST['phone_no'];
$gender = $_POST['gender'];
$country = $_POST['country'];
$courses = $_POST['courses'];
//i am checking here values***
if (!empty($username) || !empty($email_id) || !empty($phone_no) || !empty($gender) || !empty($country) || !empty($courses)) {
//db connectiion***
$host = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbname = "registartionform";
//create connection
$conn = new mysqli($host, $dbUsername, $dbPassword, $dbname);
if (mysqli_connect_error()) {
die('Connect Error('. mysqli_connect_errno().')'. mysqli_connect_error());
} else {
//check email already exists or not and insert the value in db***
$SELECT = "SELECT email_id From registration Where email_id = ? Limit 1";
$INSERT = "INSERT Into registration (username, email_id, phone_no, gender, country, courses) values($username, $email_id, $phone_no, $gender, $country, $courses)";
//Prepare statement
$stmt = $conn->prepare($SELECT);
if ($stmt !== false) {
$stmt->bind_param("s", $email_id);
$stmt->execute();
$stmt->bind_result($email_id);
$stmt->store_result();
$rnum = $stmt->num_rows;
}
if ($rnum == 0) {
$stmt->close();
$stmt = $conn->prepare($INSERT);
$stmt->bind_param("ss", $username, $email_id, $phone_no, $gender, $country, $courses);
if ($stmt !== false) {
$stmt->execute();
echo "New record inserted sucessfully";
} else {
echo "Someone already register using this email";
}
}
$stmt->close();
$conn->close();
}
} else {
echo "All field are required";
die();
}
解决方案
你不能这样做
INSERT Into registration (username, email_id, phone_no, gender, country, courses)
values($username, $email_id, $phone_no, $gender, $country, $courses)
然后尝试绑定变量
$stmt->bind_param("ss", $username, $email_id, $phone_no, $gender, $country, $courses );
您应该在 SQL 查询中使用占位符。尝试:
INSERT Into registration (username, email_id, phone_no, gender, country, courses)
values(?, ?, ?, ?, ?, ?)
值将在 bind_param 变量中提供。
此外,bind_param 中有 7 个变量,INSERT 语句中只有 6 列。您需要进行处理,否则 SQL 将不知道将数据放在哪里。
推荐阅读
- ios - React Native Expo IOS 限制接收 HTTP 请求
- sql - 按名称将某些值分组到列
- testing - AFL 不接受来自标准输入的输入
- javascript - 每次用户删除时设置 cookie
- python - json.loads(json_string) 导致 JSONDecodeError: Extra data
- graph - 某些特定类型的节点与目标节点之间的最短路径
- tcl - TclOO : my 和 self 有什么区别?
- python - pygame.error:视频系统未初始化,但我已经使用了 pygame.init()
- algorithm - 不同层中 2D 多边形岛的微分或交集
- r - 最小化R中的不连续函数