Mysql 值未知的SQL if语句

Mysql 值未知的SQL if语句,mysql,sql,variables,if-statement,Mysql,Sql,Variables,If Statement,我的情况是,如果找到客户的文件,我应该从数据库中提取客户的文件并返回他们的密码,但如果输入的客户ID未找到,我将返回“未找到” 我试图将其设置为这样的if语句: 如果$customerID=任何内容 返回密码 然而,我不确定我将如何确切地分配“任何东西”作为代码的真实部分。有没有办法做到这一点,或者我应该完全重新评估我的做法?你可以用它来做类似的事情,但实际上,最好在代码中检测空值并处理“无用户”条件 SELECT IFNULL(password, 'NOT FOUND') AS passwor

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

我试图将其设置为这样的if语句: 如果$customerID=任何内容 返回密码

然而,我不确定我将如何确切地分配“任何东西”作为代码的真实部分。有没有办法做到这一点,或者我应该完全重新评估我的做法?

你可以用它来做类似的事情,但实际上,最好在代码中检测空值并处理“无用户”条件

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

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

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

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

注意:这假设最多有一个文件具有给定的客户id。如果没有,它将返回一个错误,类似于“子查询返回多个值”。

Hmmm。。。如果一个邪恶的客户将其密码设置为
未找到。
?您使用的是哪种RDBMS。此SQL Server或mySQLUse是try-catch块吗?如果它返回密码很好,如果不是,catch块可以输出消息,请发布您迄今为止尝试过的内容,我们可以尝试帮助您找到它out@w0lf-我希望没有人那么刻薄@逻辑学家-我在mySQL工作,对不起!如果我将密码设置为
未找到
:),此解决方案将失败。这是OP请求中的一个缺陷,而不是解决方案:)@Moo Juice为什么OP会以纯文本形式存储密码?!谢谢你的帮助!正如我上面所说,我希望在这种情况下,我的教授不会卑鄙到让我陷入这种情况:P我应该使用这种解决方案吗,因为我没有客户ID,我可以在“XXX”中加上$customerID吗?@FabianBigler,你为什么要返回“未找到”作为密码?为什么不直接返回
NULL
?:)谢谢你的帮助!我完全不熟悉使用coalesce,尽管我很感兴趣。我在goBONGO评分,而且很挑剔,所以因为我还没有学会,所以很可能不会被接受。然而,你给了我一些思考和学习的东西——这比解决方案本身要好(: