0

私は4つのフィールド(開始月、開始年、終了月、終了年)を持つフォームを持っており、MySQLテーブル構造はid、customer id、amount、month、yearのようなものです

ここで、開始月と年、終了月と年の条件が一致する行を表示する必要があります。

このクエリを試しました

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

year列とmonth4つのフォームフィールドが整数であると仮定すると、これは機能します。

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]' )

$_POST[]セキュリティ上の理由から(SQLインジェクション)、データベースに送信する前に、これらの処理を行う必要があります。

の複合インデックス(empid, year, month)はパフォーマンスに役立ちます。

于 2012-04-20T08:35:33.603 に答える