0

我正在尝试在查询中获取日期范围和交易类型。我正在使用 Mysql 数据库使用 PHP。最初,该声明是

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

它工作得很好,没有问题@ all。但我还需要它来选择数据库中称为事务类型的列。这是我修改它的方法:

           ("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”附近使用正确的语法查询:SELECT date, account ,描述,来自会计的收入,其中交易类型 = '收入',并且日期在 '2012/09/01' 和 '2013/04/17' 之间按日期排序 ASC 任何帮助将不胜感激。

4

3 回答 3

2

AND 就足够了,你不需要第二个 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
("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 回答
0

请删除第二个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 回答