我有以下查询在工作台中完美运行,但返回了php中的所有行。几乎好像php完全忽略了where子句。
$sql = "SELECT
f.name facility_name,
CONCAT(f.code, '', LPAD(a.id, 6, '0')) DBNUM,
s.account_number account_number,
a.patient_last_name last_name,
a.patient_first_name first_name,
s.admission_date admit_date,
s.discharge_date,
s.total_charge,
acttype.name claim_type,
cstat.name claim_status,
date(s.created) as created,
s.close_date,
s.close_notes,
u.name
FROM
services s
LEFT OUTER JOIN
accounts a ON s.account_id = a.id
LEFT OUTER JOIN
account_types acttype ON acttype.id = a.account_type_id
LEFT OUTER JOIN
claim_statuses cstat ON cstat.id = s.claim_status_id
LEFT OUTER JOIN
facilities f ON f.id = a.facility_id
LEFT OUTER JOIN
users u ON u.id = s.modified_by
where
s.created = '2018-09-24'";
$result = mysqli_query($con, $sql);
while ($row = mysqli_fetch_assoc($result)) fputcsv($report_csv, $row);
mysqli_close($con);
答案 0 :(得分:0)
LEFT OUTER JOIN将为您提供表中的所有数据。就您而言,内部联接似乎可以解决。在您的数据库中,有哪些记录是在不同于2018-09-24的日期创建的?
如果您的所有数据都具有创建的值2018-09-24的列,则该语句实际上将返回所有数据。
如果没有,请尝试将JOINS更改为LEFT或INNER。这取决于表的关联方式
答案 1 :(得分:0)
答案是PHP版本。我使用PHP5运行这些查询,升级到PHP7.2后,一切正常进行。