【发布时间】:2019-05-01 12:15:25
【问题描述】:
你看我有这个查询:
$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_username、email)在 admin/staff 表中不存在,我们插入这些值,它工作得很好而且很快,但一个好的解决方案并不总能带来彩虹。
如果我们无法在表中插入任何值,我会返回此错误消息
echo "User already exists. Please choose a different email address or username.";
由于我无法确定存在哪一个,因此我希望用户名或电子邮件地址的特定案例返回错误。
我应该拆分查询(一个选择,然后插入)还是有其他我在网上找不到的方法可以在同一个查询中执行此操作?
我的目标是使用此查询返回特定的错误消息,例如:
“错误:用户名已经存在” 要么 “错误:电子邮件已存在。”
感谢您提前检查并尝试帮助我!
【问题讨论】:
-
我会创建两个查询或一个 MySQL 函数来返回一些响应。
-
请显示更完整的 PHP 代码块(不是行 sn-ps),因为这似乎是用户定义的错误消息。我们需要看看条件逻辑。
标签: php mysql insert-select