2017-09-25 95 views
-1

我想檢查新輸入的數據是否已經存在於數據庫中,我搜索了它並嘗試了很多次,但它不起作用數據庫接受已經存在的數據,我正在使用PDO和PHP。如何檢查數據庫中是否有相同的數據?

數據庫已1個表稱爲數據和這個表有2列的姓名和電話

下面是代碼:

$connect = new PDO("mysql:host ={$host}; dbname={$database}" , $username , $password); 
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$statement = $connect->prepare("SELECT * FROM data WHERE name= :sname AND phone = :sphone"); 
$statement->execute(array("sname" => $name , "sphone" => $phone)); 
$count = $statement->rowCount(); 

if($count > 0){ 
}else{      
    $q = $connect->prepare("INSERT INTO data(name,phone) VALUES(:aname, :aphone)"); 
    $q->execute(array("aname" => $name,"aphone" => $phone)); 
} 
+0

爲什麼不使用的數據,而不是唯一索引'(姓名,電話)'防止重複行的插入? –

+0

這不會導致SQL錯誤嗎? – Danny

+0

是的,但你可以很容易地處理該錯誤 –

回答

0

如果你確信這些信息只能插入一次:使「名稱」和「電話」的組合是唯一的。這不完全是你要求的,但結果是一樣的:沒有重複的內容。

ALTER TABLE data ADD UNIQUE INDEX Index1 (name, phone);

你現在可以將你想要什麼都:如果它是一個重複的插入操作將失敗。如果需要,您可以檢查此(特定)故障並通知用戶。

+0

我編輯的問題,並補充說:該數據庫有1個表稱爲數據,這個表有2列的名稱和電話 – Danny

+0

@丹尼我的答案保持不變2列或更多列 –

0

嘗試:

$count = $statement->fetchColumn(); 

,而不是

$count = $statement->rowCount(); 
相關問題