0

我有 4 个字段的表单,即(开始月份、开始年份、结束月份、结束年份)和 MySQL 表结构就像 id、客户 id、金额、月份、年份

现在,我需要在开始月份和年份以及结束月份和年份之间显示具有匹配条件的行。

我试过这个查询

select id,customer id,concat(month,'-',year) as d1 from payroll where
empid='$_POST[emp_id]' and (STR_TO_DATE(d1,'%m-%Y') between
STR_TO_DATE('$_POST[fmonth]-$_POST[fyear]','%m-%Y') and
STR_TO_DATE('$_POST[tmonth]-$_POST[tyear]','%m-%Y'))

请指教....

4

1 回答 1

2

假设列yearmonth4 个表单字段是整数,这将起作用:

SELECT id
     , customer id
     , CONCAT(month, '-', year) AS d1 
FROM payroll 
WHERE empid = '$_POST[emp_id]' 
  AND (year, month) >= ( '$_POST[fyear]', '$_POST[fmonth]' ) 
  AND (year, month) <= ( '$_POST[tmonth]', '$_POST[tyear]' )

出于安全原因(SQL 注入) ,您可能应该$_POST[]在将它们发送到数据库之前处理它们。

一个复合索引(empid, year, month)将有助于性能。

于 2012-04-20T08:35:33.603 回答