在我的文件顶部,我检查了$clientid
使用echo $clientid
的内容。这与731相呼应。
在脚本的下方我运行此查询:
$active_ts = db_select("SELECT * FROM `timesheets` WHERE clientid='".$clientid."' AND status=\"client\" OR status=\"cand\"");
var_dump($active_ts);
我期望发生的事情只是选择clientid
为731的时间表。
var_dump
显示的是["clientid"]=> string(3) "345"
,["clientid"]=> string(3) "712"
,["坦诚"] => string(3)" 730"和["clientid"]=> string(3) "721"
我真的不知道如何进一步调试......
答案 0 :(得分:4)
这是您的查询:
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')
答案 1 :(得分:3)
因为查询选择了status = cand
的用户。
您需要更改查询:
$active_ts = db_select('
SELECT * FROM `timesheets`
WHERE clientid='.$clientid.' AND (status="client" OR status="cand")
');
我认为你'
之间不需要clientid
,因为它是int。