2014-02-09 63 views
0

我使用的MySQL的“唯一”属性的用户名和电子邮件列重叠。我如何知道这两个(用户名和电子邮件)中的哪一个重叠。我想根据重叠值回显错误消息。重叠电子邮件和/或用户名的不同错误消息。如何知道哪些值在库MySQLi(使用UNIQUE)

注:我在使用PHP。

+0

给我们看一些代码。 –

+0

基于数据库响应返回错误消息可能非常不可靠。最好的办法是查询你想要保存的值并在保存前进行验证。我想用一些框架为你做这件事是最好的办法,试着寻找一个PHP的ORM。 – eduardohl

+0

我没有为此写任何特定的代码。我试图将用户插入数据库。例如,我写了一些代码;分钟密码的长度,检查单选按钮是否被选中。最后,我添加一个'else'来显示有错误,并且它工作正常,如果我尝试插入一个用户名称在数据库中已经存在的用户,它给了我在“其他”中写的错误质量。我想知道是否有办法知道这两者中哪一个重叠。 – ctarimli

回答

0

听起来好像您在updateinsert上发生了错误。

如果你想指定你自己的错误信息,那么你需要在表上创建一个触发器并自己检查。 (或者,通过存储过程,你可以在存储过程中检查并设置错误信息做数据修改。)的signal语法允许你从触发回你自己的错误信息,所以它可以包含任何你喜欢。

您可以阅读更多关于signalhere

+0

谢谢,我正在阅读它。 – ctarimli

+1

fyi,'SIGNAL'从'5.5'开始可用 –

0

您可以首先查询该用户名或电子邮件的数据库,如果得到结果,请检查结果集以查看哪一个与发布的值相同。

$query = "SELECT * FROM userTable WHERE username = '" . $_POST['username'] . "' OR email = '" . $_POST['email'] . "' 

如果该查询返回任何结果,获取该行与mysqli_fetch_assoc与$ _ POST值进行比较的用户名和电子邮件的值。如果它不返回任何值,则可以运行插入/更新查询。

+0

我曾经遵循这个方法,这个工作原理没有将列标记为唯一。但是,在mysql中使用独特的是什么呢?必须有办法知道哪些重叠。不管怎么说,还是要谢谢你。 – ctarimli

相关问题