准备好的声明无法获取所有结果

时间:2016-08-17 15:10:24

标签: php mysql prepared-statement

我有一份准备好的声明,它正在抓住存储设施中的租金并将它们放在一个列表中,以便在它们即将到期时跟踪后端。我遇到的问题是,当语句输出列表时,如果多个人在到期之前有相同的天数,则该列表仅显示其中一个租户。我有这是我准备好的声明:

SELECT rentals.rental_startdate,
       rentals.rental_renewdate,
       rentals.rental_duedate,
       rentals.rental_latedate, 
       rentals.rental_status,
       rentals.rental_balance,
       units.unit_id,
       units.unit_number,
       units.unit_status,
       users.user_id,
       users.user_fname,
       users.user_lname,
       @var := DATEDIFF(rentals.rental_renewdate,CURRENT_DATE) AS days 
  FROM rentals
 INNER JOIN units ON units.unit_id = rentals.unit_id
 INNER JOIN users ON users.user_id = rentals.user_id
 WHERE rentals.rental_status=? 
 GROUP BY rentals.rental_renewdate HAVING days>=0 AND days<=?
 ORDER BY rentals.rental_renewdate ASC

问题似乎来自HAVING days>=0 AND days<=?。天数等于通知期间,通知期间在变量中定义为5天。当我把它拿下来的时候,我看到我们所有人都会在5天或10天之前到期,因为我们并不真正想要它,但它解决了只看到一个人将要到期的问题。真的有2天。有什么东西看起来不合适会引起这个问题吗?我使用while($select -> fetch()) {来选择行。

1 个答案:

答案 0 :(得分:1)

您需要将名称数据添加到GROUP BY子句中。

GROUP BY users.user_fname, users.user_lname, rentals.rental_renewdate

应该做的伎俩