0

クエリで日付範囲とトランザクション タイプを取得しようとしています。私はMysqlデータベースを使用してPHPで作業しています。もともと、その発言は

         ("select * from accounting WHERE date between '$startdate' AND 
        '$enddate'",$prop);

それは美しく機能し、問題はありません@すべて。しかし、トランザクション タイプと呼ばれるデータベース内の列を選択するためにも必要です。これが私がそれをどのように変更したかです:

           ("SELECT date, account, description, Income FROM accounting where 
           transactiontype = 'Income' and WHERE date between '$startdate' AND 
           '$enddate' order by date ASC",$prop);

次のエラー メッセージが表示されます。エラー: SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の「WHERE date between '2012/09/01' AND '2013/04/17' order by date ASC」付近で使用する正しい構文を確認してください、説明、Income FROM accounting where transactiontype = 'Income' and WHERE date between '2012/09/01' AND '2013/04/17' order by date ASC 助けていただければ幸いです。

4

3 に答える 3

2

AND で十分です。2 番目の WHERE は必要ありません。

("SELECT `date`, account, description, Income 
  FROM accounting 
  WHERE transactiontype = 'Income' 
  AND `date` between '$startdate' 
  AND '$enddate' order by `date` ASC",$prop);

ところで、予約済みのキーワードをテーブル/列名 (日付など) として使用しないようにしてください。常にそれらから逃れる必要があります (そして、それを常に忘れるでしょう)。

于 2013-04-19T15:43:50.680 に答える
0

親切に2番目のwhere句を削除してください..

       (SELECT date, account, description, Income FROM accounting where 
       transactiontype = 'Income' and (date between '$startdate' AND 
       '$enddate') order by date ASC",$prop )
于 2013-04-19T15:46:36.317 に答える
0
("SELECT date, account, description, Income FROM accounting where 
  transactiontype = 'Income' and "date" between '$startdate' AND 
 '$enddate' order by date ASC",$prop);

示されているように、日付をスピーチ マークまたはティック (`) で囲む必要がある場合もあります。

于 2013-04-19T15:44:43.017 に答える