如果尚未存在,则将名称插入表中

时间:2012-09-12 03:33:52

标签: php mysql sql unique

我正在尝试构建一个允许用户提交要添加到db表(runningList)的名称的应用程序。在添加名称之前,我想检查另一个表(controlList)的firstname和lastname。它必须存在于(controlList)或回复名称中无效。如果名称有效,我想检查firstname和lastname(runningList),确保它不存在。如果不存在,则插入名字&姓。如果它在那里,已经使用了回复名称。

下面是我尝试针对controlList添加测试之前的代码, 在尝试添加额外步骤时,我以某种方式完全破坏了它。

if (mysql_num_rows(mysql_query('SELECT * FROM runninglist WHERE firstname=\'' .$firstname . '\' AND lastname=\'' . $lastname . '\' LIMIT 1')) == 0)
{
 $sql="INSERT INTO runninglist (firstname, lastname)
 VALUES ('$_POST[firstname]','$_POST[lastname]')";
}
else
{
echo "This name has been used.";
 }

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

在(名字,姓氏)上创建“唯一”索引。

然后,当插入运行时,它将失败。只需忽略错误(或采取其他行动)


编辑:引用manual

  

UNIQUE索引创建一个约束,以便索引中的所有值   必须是截然不同的如果您尝试使用a添加新行,则会发生错误   与现有行匹配的键值。

答案 1 :(得分:3)

最好的方法是在两列上创建索引:firstnamelastname

ALTER TABLE youtableName ADD UNIQUE uniqueName (firstname,lastname)

这样,当您尝试插入已存在的名称时,将生成错误。