Php 检测重复值
我有一张桌子,它的结构是Php 检测重复值,php,mysql,Php,Mysql,我有一张桌子,它的结构是 companies - table id name url logo 从这个表中,我想在插入之前检查名称是否已经存在,url是否存在,徽标是否存在。名称、url和徽标应该是唯一的。我可以检查一下 SELECT * FROM companies WHERE name='$name' OR url='$url' OR logo='$logo' 并计算记录的数量。从上面的查询中,我是否可以检测出哪个字段是重复的?因此,我可以在视图中显示错误时将该字段显示为重复字段 谢谢是
companies - table
id
name
url
logo
从这个表中,我想在插入之前检查名称是否已经存在,url是否存在,徽标是否存在。名称、url和徽标应该是唯一的。我可以检查一下
SELECT * FROM companies WHERE name='$name' OR url='$url' OR logo='$logo'
并计算记录的数量。从上面的查询中,我是否可以检测出哪个字段是重复的?因此,我可以在视图中显示错误时将该字段显示为重复字段
谢谢是的,你可以。。因为您必须将“id”作为表的主键 您可以使用
徽标添加唯一键,然后索引名称
,url
,logo
唯一。
试试这个
SELECT `id` FROM companies WHERE name='$name' AND url='$url' AND logo='$logo'
如果遇到任何此类值,则显示复制错误。这是您的select查询
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++;
}
$num\u of\u记录=0;
while($row=mysqli\u fetch\u数组($result))
{
如果($name==$row['name'])
{
echo.“名称->”$row['name'].“重复”;
回声“
”;
}
else if($url==$row['url']))
{
echo.“url->.”$row['url'].“重复”;
回声“
”;
}
else if($logo==$row['logo']))
{
echo.“logo->.”$row['logo'].“重复”;
回声“
”;
}
$num_of_记录++;
}
echo“记录数->”$num_of_记录 您可以创建一个唯一的密钥,该密钥将导致插入失败-这避免了需要两个查询:
ALTER TABLE `companies` ADD UNIQUE (
`url`,
`name`,
`logo`
);
旁注:不要选择*
并计算返回的行数-而是使用选择计数(*)
。@Stobor另一方面,实际计算返回的行数正是OP需要的,因为他们还可以检查过程中的列值,并查看哪些是重复的。@lc。良好的调用反射在这种情况下最多返回3行(由于唯一性约束),并且可以使用数据,因此返回所有内容不会造成重大损失。。。