3

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

companies - table
id
name
url
logo

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

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

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

谢谢

4

3 回答 3

2

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

ALTER TABLE `companies` ADD UNIQUE (
 `url`, 
 `name`,
 `logo` 
);
于 2013-08-18T17:46:01.240 回答
0

是的,您可以.. 因为您必须将“id”作为表的主键。

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

试试这个

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

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

于 2013-08-18T17:13:59.360 回答
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 "记录数 -> ".$num_of_records;

于 2013-08-18T17:28:10.153 回答