2017-06-04 142 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「成功創建新記錄時交換';',因爲必須在輸出之前設置所有標題(因爲輸出已經導致標題被髮送) 。雖然沒有人會在正常情況下看到他們的瀏覽器會重定向他們。 –

相關問題