检测重复值

时间:2013-08-18 17:04:48

标签: php mysql

我有一张桌子,它的结构是,

companies - table
id
name
url
logo

从这个表中我想检查名称是否已经存在,url是否存在,插入之前是否存在logo。名称,网址和徽标应该是唯一的。我可以查一下,

SELECT * FROM companies WHERE name='$name' OR url='$url' OR logo='$logo'

并计算记录数。从上面的查询,无论如何我可以检测哪个字段是重复的?因此,我可以在显示视图中的错误时将该字段显示为重复。

谢谢

3 个答案:

答案 0 :(得分:2)

您可以创建一个唯一的密钥,这将导致您的插入失败 - 这可以避免需要两个查询:

ALTER TABLE `companies` ADD UNIQUE (
 `url`, 
 `name`,
 `logo` 
);

答案 1 :(得分:0)

是的,你可以......因为你必须放置' id'作为表格的主键。

您可以执行某些操作,例如使用logo 添加唯一键,然后建立索引nameurllogo为唯一。

并试试这个

SELECT `id` FROM companies WHERE name='$name' AND url='$url' AND logo='$logo'

如果遇到任何此类值,则显示重复错误。

答案 2 :(得分:0)

这是您的选择查询。

SELECT name,url,logo FROM companies WHERE name='$name' OR url='$url' OR logo='$logo';

然后循环结果

$num_of_records=0;
while($row = mysqli_fetch_array($result))
{

if($name==$row['name'])
{
  echo  . " name -> " . $row['name'] ." duplicated ";
  echo "<br>";
}
else if($url==$row['url']) 
{
  echo  . " url -> " . $row['url'] ." duplicated ";
  echo "<br>";
}
else if($logo==$row['logo'])
{
  echo  . " logo -> " . $row['logo'] ." duplicated ";
  echo "<br>";
}
 $num_of_records++;
}

echo“记录数量 - &gt;”。$ num_of_records;