你看我有这样的疑问:
$sql = "INSERT INTO visitor( visitor_username, email, PASSWORD )
SELECT * FROM ( SELECT '$username', '$email','$password')
AS tmp WHERE NOT EXISTS
(SELECT admin.admin_username, admin.email FROM admin AS admin
WHERE admin.admin_username = '$username' OR admin.email = '$email'
UNION SELECT staff.staff_username, staff.email FROM staff
AS staff WHERE staff.staff_username = '$username' OR
staff.email = '$email' ) LIMIT 1";
基本上,如果值(visitor\u username,email)在admin/staff表中不存在,我们就插入这些值,它工作得很好,很快,但是一个好的解决方案并不总是带来彩虹。
如果无法在表中插入任何值,我将返回此错误消息
echo "User already exists. Please choose a different email address or username.";
因为我不能确定哪一个存在,我想有具体的情况下返回错误的用户名或电子邮件地址。
我应该拆分查询(先选择一个,然后插入),还是有其他我在网上找不到的方法在同一个查询中执行此操作?
我的目标是通过此查询返回特定的错误消息,例如:
“错误:用户名已存在”或“错误:电子邮件已存在。”
感谢您提前查看并尝试帮助我!。
1条答案
按热度按时间4c8rllxm1#
我将创建两个查询或一个mysql函数来返回一些响应。如果您决定使用mysql函数,这就是方法(根据您的目的调整以下查询):
您将像下面的查询一样调用此函数,您将只得到一条具有上述输出之一的记录: