4

我正在尝试构建一个允许用户提交名称以添加到数据库表(runningList)的应用程序。在添加名称之前,我想对照另一个表(controlList)检查名字和姓氏。它必须存在于 (controlList) 中,否则回复名称无效。如果名称有效,我想检查名字和姓氏对(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.";
 }

有什么建议吗?

4

2 回答 2

3

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

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


编辑:从手册中引用:

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

于 2012-09-12T03:36:21.840 回答
3

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

ALTER TABLE youtableName ADD UNIQUE uniqueName (firstname,lastname)

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

于 2012-09-12T03:41:01.660 回答