0

我有一种情况,我应该从数据库中提取客户的文件并在找到他们的文件时返回他们的密码,但是如果没有找到输入的客户 ID,我将返回“未找到。 "

我试图将其设置为这样的 if 语句: if $customerID = any return password;

但是,我不确定如何将“任何东西”指定为代码的真实部分。有没有办法做到这一点,或者我应该重新评估我完全这样做的方式?

4

2 回答 2

1

您可以使用IFNULL来执行此类操作,但实际上,最好在代码中检测 NULL 并处理“无用户”条件。

SELECT IFNULL(password, 'NOT FOUND') AS password 
FROM yourtable 
WHERE customerid=XXX;

正如其他人所指出的,问题在于您无法区分丢失的用户记录和以“未找到”作为密码的记录。这可能是良性的,但也可能导致未来可利用的条件。在检查用户输入时,不要相信任何东西:)

于 2013-07-14T21:00:01.580 回答
0

您可以在 SQL 中通过使用子查询和coalesce(). 以下是对您的数据结构的猜测,但它显示了在找不到任何内容时如何返回NOT FOUND

select coalesce((select f.password
                 from files f
                 where f.customerId = $CustomerId
                ), 'NOT FOUND')

注意:这假设最多一个文件具有给定的客户 ID。如果不是,它将返回一个错误,例如“子查询返回多个值”。

于 2013-07-14T21:00:08.130 回答