Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查数据库中是否有相同的数据?_Php_Sql_Pdo - Fatal编程技术网

Php 如何检查数据库中是否有相同的数据?

Php 如何检查数据库中是否有相同的数据?,php,sql,pdo,Php,Sql,Pdo,我想检查新输入的数据是否已经存在于数据库中,我搜索了它并尝试了很多次,但是它不起作用。数据库接受已经存在于其中的数据,我正在使用PDO和PHP 数据库有一个名为data的表,该表有两列name和phone 代码如下: $connect = new PDO("mysql:host ={$host}; dbname={$database}" , $username , $password); $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRM

我想检查新输入的数据是否已经存在于数据库中,我搜索了它并尝试了很多次,但是它不起作用。数据库接受已经存在于其中的数据,我正在使用PDO和PHP

数据库有一个名为data的表,该表有两列name和phone

代码如下:

$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添加唯一索引Index1(姓名、电话)

现在,您可以随时插入所需内容:如果重复,则插入操作将失败。如果需要,您可以检查此(特定)故障并通知用户。

尝试:

$count = $statement->fetchColumn();
而不是

$count = $statement->rowCount();

为什么不在数据(姓名、电话)上使用唯一索引
,以防止插入重复行?这不会导致SQL错误吗?是的,会,但是你可以很容易地处理这个错误。我编辑了这个问题并补充道:数据库有一个名为data的表,这个表有两列name和namephone@Danny我的答案在两列或更多列中保持不变