2017-09-25 94 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(); 
相关问题