在将数据提交到MySql数据库之前检查是否存在
问题描述:
我有一个将数据提交给数据库的PHP代码,但是我想限制数据(如果数据已经存在)。我试过下面的代码,但总是插入数据而不检查存在。在将数据提交到MySql数据库之前检查是否存在
if(isset($_POST['submit'])){
$phone = $_POST['phone'];
$checkDataSql = "SELECT phone FROM lead WHERE phone=$phone" ;
$run = $conn->query($checkDataSql);
if ($run->num_rows > 0) {
header("location:add_lead.php?error=unsuccess");
}
else{
$phone = $_POST['phone'];
}
$name = $_POST['name'];
$email = $_POST['email'];
$gender = $_POST['gender'];
$treatment = intval($_POST['treatment']);
$date = date('Y-m-d');
$source = intval($_POST['source']);
$staff = intval($_POST['staff_id']);
$insertLead = "INSERT INTO lead
(`id`, `name`, `phone`, `email`, `gender_id`, `treatment_id`, `date`, `source_id`, `remark`, `staff_id`)
VALUES (NULL, '$name', '$phone', '$email', '$gender', '$treatment', '$date', '$source', '', '$staff')";
if ($conn->query($insertLead) === TRUE) {
echo "New record created successfully";
header("location:add_lead.php?submitted=successfully");
} else {
echo "Error: " . $insertLead . "<br>" . $conn->error;
}
}
答
设置页眉重定向不立即做重定向,所以你需要像
exit;
添加一些东西既header()
呼叫后在该点停止执行。
此外,现在看看SQL注入,你的代码是完全不安全的,你会被黑客入侵之前,你知道它与它是一样的。
+1
谢谢卢克,因为那件简单的事情,我早上从头昏脑过。而且正如你所建议的那样,我会让它安全。 – Jayprakash
+0
很酷。您还需要在'echo“成功创建新记录时交换';',因为必须在输出之前设置所有标题(因为输出已经导致标题被发送) 。虽然没有人会在正常情况下看到他们的浏览器会重定向他们。 –
什么不在这里工作,你的代码看起来没问题。如果只是退出标题,请参阅下面的答案。如果这没有解决,那么我有自己的想法,为什么你的代码可能会失败。 –
btw,'$ phone'的价值是什么?和这里的HTML表单在哪里? –
是的,Fred-ii,代码是好的,唯一的问题是使用'header()',使用下面的解决方案它工作,谢谢你的时间。 – Jayprakash