[英]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.