如何检查数据库中是否有相同的数据?
问题描述:
我想检查新输入的数据是否已经存在于数据库中,我搜索了它并尝试了很多次,但它不起作用数据库接受已经存在的数据,我正在使用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));
}
答
如果你确信这些信息只能插入一次:使“名称”和“电话”的组合是唯一的。这不完全是你要求的,但结果是一样的:没有重复的内容。
ALTER TABLE data ADD UNIQUE INDEX Index1 (name, phone);
你现在可以将你想要什么都:如果它是一个重复的插入操作将失败。如果需要,您可以检查此(特定)故障并通知用户。
+0
我编辑的问题,并补充说:该数据库有1个表称为数据,这个表有2列的名称和电话 – Danny
+0
@丹尼我的答案保持不变2列或更多列 –
答
尝试:
$count = $statement->fetchColumn();
,而不是
$count = $statement->rowCount();
为什么不使用的数据,而不是唯一索引'(姓名,电话)'防止重复行的插入? –
这不会导致SQL错误吗? – Danny
是的,但你可以很容易地处理该错误 –