我有一张桌子,它的结构是,
companies - table
id
name
url
logo
从这个表中我想检查名称是否已经存在,url是否存在,插入之前是否存在logo。名称,网址和徽标应该是唯一的。我可以查一下,
SELECT * FROM companies WHERE name='$name' OR url='$url' OR logo='$logo'
并计算记录数。从上面的查询,无论如何我可以检测哪个字段是重复的?因此,我可以在显示视图中的错误时将该字段显示为重复。
谢谢
答案 0 :(得分:2)
您可以创建一个唯一的密钥,这将导致您的插入失败 - 这可以避免需要两个查询:
ALTER TABLE `companies` ADD UNIQUE (
`url`,
`name`,
`logo`
);
答案 1 :(得分:0)
是的,你可以......因为你必须放置' id'作为表格的主键。
您可以执行某些操作,例如使用logo
添加唯一键,然后建立索引name
,url
,logo
为唯一。
并试试这个
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;