为什么PHP与phpmyadmin区别对待我的where子句?

时间:2018-10-03 02:05:59

标签: php mysql

我有以下查询在工作台中完美运行,但返回了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);

2 个答案:

答案 0 :(得分:0)

LEFT OUTER JOIN将为您提供表中的所有数据。就您而言,内部联接似乎可以解决。在您的数据库中,有哪些记录是在不同于2018-09-24的日期创建的?

如果您的所有数据都具有创建的值2018-09-24的列,则该语句实际上将返回所有数据。

如果没有,请尝试将JOINS更改为LEFT或INNER。这取决于表的关联方式

答案 1 :(得分:0)

答案是PHP版本。我使用PHP5运行这些查询,升级到PHP7.2后,一切正常进行。