繁体   English   中英

SQL查询返回错误结果

[英]SQL query is returning the wrong results

在文件的顶部,我已经使用echo $clientid检查了$clientid在使用什么。 这回音731。

在脚本的更下方,我正在运行此查询:

$active_ts = db_select("SELECT * FROM `timesheets` WHERE clientid='".$clientid."' AND status=\"client\" OR status=\"cand\"");
var_dump($active_ts); 

我希望会发生的事情只是选择了具有731客户clientid的时间表。

但是var_dump显示的是["clientid"]=> string(3) "345"["clientid"]=> string(3) "712" ,[“ candid”] => string(3)“ 730”和["clientid"]=> string(3) "721"

我真的不知道该如何进一步调试...。

这是您的查询:

SELECT *
FROM `timesheets`
WHERE clientid = '".$clientid."' AND status = 'client' OR status = 'cand'

WHERE子句没有括号。 它被解释为:

WHERE (clientid = '".$clientid."' AND status = 'client') OR status = 'cand'

大概这不是您想要的。 我建议您使用IN

WHERE clientid = '".$clientid."' AND status  IN ('client', 'cand')

因为查询选择status = cand用户。

您需要更改查询:

变更:

$active_ts = db_select('
    SELECT * FROM `timesheets` 
    WHERE clientid='.$clientid.' AND (status="client" OR status="cand")
');

我认为您在clientid之间不需要' ,因为它是int。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM