使用 BETWEEN 与 JOIN php/mysql 时不显示结果

Posted

技术标签:

【中文标题】使用 BETWEEN 与 JOIN php/mysql 时不显示结果【英文标题】:No results displayed when using BETWEEN with JOIN php/mysql 【发布时间】:2015-01-19 20:59:52 【问题描述】:

由于某种原因,我无法让 php/mysql 使用 between 选项进行 JOIN。我是不是又在看东西了?

当我运行这个脚本时,我得到的只是一个没有错误的页面......?

任何想法都会有所帮助!

 $start = date("m/1/Y");
 $end = date("m/31/Y");

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');

$output = fopen('php://output', 'w');

fputcsv($output, array('ID', 'P.O #', 'Date', 'To', 'Time', 'Vin', 'Reason', 'Amount', 'Employee #', 'Mananger', 'Account #', 'Store Location', 'Borrowed', 'verified','Adjustment','Adjustment by','','VOID','Emp Name'));

mysql_connect('*********', '**********', '***********');
mysql_select_db('donavons_car_scanner');
$rows = mysql_query('SELECT fpo.*, users.name FROM fpo  WHERE date BETWEEN '" . $start . "' AND  '" . $end . "' LEFT OUTER JOIN users ON (fpo.empnum = users.empnum)');

while ($row = mysql_fetch_assoc($rows)) fputcsv($output, $row);

谢谢!

【问题讨论】:

【参考方案1】:

你把JOIN放错地方了,你想在添加条件之前加入表格 -

SELECT fpo.*, users.name 
FROM fpo 
LEFT OUTER JOIN users 
ON (fpo.empnum = users.empnum)' 
WHERE date BETWEEN '" . $start . "' AND  '" . $end . "' 

你真的应该stop using mysql_* functions。** 它们不再被维护并且是officially deprecated。改为了解prepared statements,并**使用PDO。

【讨论】:

【参考方案2】:

除了 Jay 的回答(因为我无法评论),mysql 日期预计在 yyyy-mm-dd。

The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.

-http://dev.mysql.com/doc/refman/5.1/en/datetime.html

$start = date("m/1/Y");
$end = date("m/31/Y");

应该是

$start = date("Y/m/1");
$end = date("Y/m/31");

【讨论】:

以上是关于使用 BETWEEN 与 JOIN php/mysql 时不显示结果的主要内容,如果未能解决你的问题,请参考以下文章

标准 SQL:使用 BETWEEN 通过两个条件进行 LEFT JOIN

Mysql Inner join,Where,Between 在多个表中

SQL join操作中BETWEEN、WHERE和ON的区别

在 CTE 中使用 Order By 和 Left or right join

在 ClickHouse 中使用 between 条件连接表

Azure 流分析:多个 Windows JOIN 生成太多行