若表中不存在名称,请将其插入


Insert names into table if not already existing

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

以下是在我尝试添加针对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.";
 }

有什么建议吗?

在(firstname,lastname)上创建一个"唯一"索引。

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


编辑:引用手册:

UNIQUE索引创建一个约束,以便索引中的所有值必须是不同的。如果尝试添加具有与现有行匹配的键值。

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

ALTER TABLE youtableName ADD UNIQUE uniqueName (firstname,lastname)

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