我正在尝试构建一个应用程序,允许用户提交要添加到数据库表中的名称(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索引创建一个约束,以便索引中的所有值必须是不同的。如果尝试添加具有与现有行匹配的键值。
最好的方法是在两列上创建索引:firstname
和lastname
ALTER TABLE youtableName ADD UNIQUE uniqueName (firstname,lastname)
这样,当您尝试插入已经存在的名称时,将生成一个错误。