Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何知道MySQL中哪个值重叠(使用UNIQUE)_Php_Mysql - Fatal编程技术网

Php 如何知道MySQL中哪个值重叠(使用UNIQUE)

Php 如何知道MySQL中哪个值重叠(使用UNIQUE),php,mysql,Php,Mysql,我使用MySQL的“唯一”属性作为用户名和电子邮件列。我如何知道这两个(用户名和电子邮件)中哪一个重叠?我想根据重叠值回显错误消息。重叠电子邮件和/或用户名的不同错误消息 听起来您在更新或插入时遇到了错误 如果您想指定自己的错误消息,那么您需要在表上创建一个触发器并自己进行检查。(或者,通过存储过程执行所有数据修改,您可以在存储过程中执行检查并设置错误消息。)signal语法允许您从触发器返回自己的错误消息,因此它可以包含您喜欢的任何内容 您可以阅读更多关于信号的信息。您可以首先在数据库中查询该

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

听起来您在
更新
插入
时遇到了错误

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


您可以阅读更多关于
信号

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

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

如果此查询返回任何结果,请使用mysqli\u fetch\u assoc获取该行,并将用户名和电子邮件值与$\u POST值进行比较。如果它不返回任何值,您可以运行insert/update查询

基于数据库响应返回错误消息可能非常不可靠。最好的办法是查询您试图保存的值,并在保存之前对其进行验证。我想使用一些框架为您实现这一点是最好的方法,尝试为PHP寻找一个ORM。我没有为此编写任何特定的代码。我正在尝试将用户插入数据库。例如,我编写了一些if代码;最小密码长度,检查是否选择了单选按钮。。最后,我添加了一个“else”来显示有一个错误,它起作用了,如果ı尝试插入一个用户名已经存在于数据库中的用户,它会给出我在“else”中写的错误信息。我想知道是否有办法知道这两个列中的哪一个是重叠的。在mysqlI中手动运行查询,使用这种方法可以在不将列标记为唯一的情况下运行。但是,在mysql中使用unique有什么意义呢?必须有办法知道哪些是重叠的。无论如何,谢谢。请不要在SQL中提供用户输入。这是一种非常糟糕的做法。此外,您提供的检查基本上是DB对约束检查所做的。仅供参考,
信号从
5.5