2017-06-04 158 views
-1

我有一个将数据提交给数据库的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; 
} 


} 
+0

什么不在这里工作,你的代码看起来没问题。如果只是退出标题,请参阅下面的答案。如果这没有解决,那么我有自己的想法,为什么你的代码可能会失败。 –

+0

btw,'$ phone'的价值是什么?和这里的HTML表单在哪里? –

+0

是的,Fred-ii,代码是好的,唯一的问题是使用'header()',使用下面的解决方案它工作,谢谢你的时间。 – Jayprakash

回答

0

设置页眉重定向不立即做重定向,所以你需要像

exit;

添加一些东西既header()呼叫后在该点停止执行。

此外,现在看看SQL注入,你的代码是完全不安全的,你会被黑客入侵之前,你知道它与它是一样的。

+1

谢谢卢克,因为那件简单的事情,我早上从头昏脑过。而且正如你所建议的那样,我会让它安全。 – Jayprakash

+0

很酷。您还需要在'echo“成功创建新记录时交换';',因为必须在输出之前设置所有标题(因为输出已经导致标题被发送) 。虽然没有人会在正常情况下看到他们的浏览器会重定向他们。 –

相关问题