我有一种情况,我应该从数据库中提取客户的文件并在找到他们的文件后返回密码,但如果找不到输入的客户ID,我将返回“没找到。“
我试图将其设置为if语句,如下所示: 如果$ customerID =任何东西 返回密码;
然而,我不确定我将把“任何东西”作为代码的真实部分进行分配。有没有办法做到这一点,还是应该重新评估我完全按照这种方式进行的方式?
答案 0 :(得分:1)
您可以使用IFNULL来执行此类操作,但实际上,最好在代码中检测NULL并处理“无用户”条件。
SELECT IFNULL(password, 'NOT FOUND') AS password
FROM yourtable
WHERE customerid=XXX;
正如其他人所指出的那样,问题在于你无法区分缺失的用户记录与使用“未找到”作为密码的用户记录。这个的含义可能是良性的,但也可能导致未来的可利用条件。在检查用户输入时,不要信任:)
答案 1 :(得分:0)
您可以使用子查询和coalesce()
在SQL中执行此操作。以下是对您的数据结构的猜测,但它显示了在找不到任何内容时如何返回NOT FOUND
:
select coalesce((select f.password
from files f
where f.customerId = $CustomerId
), 'NOT FOUND')
注意:这假定最多一个文件具有给定的客户ID。如果没有,它将返回一个错误,例如“子查询返回多个值”。