我正在一个页面上,用户可以在该页面上选择通过ZIP文件下载哪些过期发票。我正在更改一个现有查询,以仅提取用户已检查的那些发票,在该发票中,作业ID号通过数组发送到PHP函数。
下载所有发票的现有查询为:
$sql = '
select i.jobid
from invoice i
join job j
on j.id = i.jobid
where i.total > 0
';
$Q = $this->read_db->query($sql, array($days));
$ days是显示发票的天数。
我将其更改为:
$ids = implode(',', $invids); // $invids is the array sent in of invoice numbers
$sql = 'select `i`.`jobid` from `invoice` `i` WHERE `i`.`jobid` IN ' . $ids . ' join `job` `j` on `j`.`id` = `i`.`jobid` where `i`.`total` > 0 ';
$Q = $this->read_db->query($sql, array($days));
当我尝试回显$ Q-> result()时,出现错误Call to a member function result() on boolean
。我对MySQL很陌生,因此不胜感激。
答案 0 :(得分:0)
您的查询格式非常奇怪且无效,这就是为什么它返回布尔值(false)的原因。
SELECT i.jobid FROM `invoice` i JOIN `job` j ON j.id = i.jobid WHERE i.total > 0
SELECT i.jobid FROM `invoice` i JOIN `job` j ON j.id = i.jobid WHERE i.total > 0 AND i.jobid IN('.$ids.')
此外,请始终使用PDO或Prepared MySQLI。
https://www.w3schools.com/php/php_mysql_prepared_statements.asp