php - 错误是查询连接和日期/时间间隔

标签 php mysql sql

这个问题在这里已经有了答案:





mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows etc... expects parameter 1 to be resource

(31 个回答)


7年前关闭。




我使用下面给出的查询从两个表中获取了记录。

mysql_query("SELECT Table1.username, SUM(Table2.points) 
AS total FROM Table2 INNER JOIN Table1 ON Table1.userid = Table2.userid 
GROUP BY Table1.username ORDER BY SUM(Table2.points) DESC LIMIT 10");

我正在尝试使用日期/时间限制 [1 天] 第二种情况 [7 天] 获取相同的记录。
mysql_query("SELECT Table1.username, SUM(Table2.points) 
AS total FROM Table2  WHERE  Table2.date BETWEEN (NOW() - INTERVAL 1 DAY) AND NOW() 
INNER JOIN Table1 ON Table1.userid = Table2.userid 
        GROUP BY Table1.username ORDER BY SUM(Table2.points) DESC LIMIT 10");

此查询不起作用,我找不到此查询的问题。

表 1 不包含任何日期列。
表 2 包含一个我想用于时间间隔的日期列。

我已经尝试了以下所有给定的问题。并为所有人收到相同的错误。

警告:mysql_fetch_array() 期望参数 1 是资源, bool 值在

另外:我在日期类型中使用时间戳。

请指导。

最佳答案

不仅位置在错误的地方,而且看起来您应该使用 CURDATE() 而不是 NOW() 因为您说它是日期列而不是日期时间列

SELECT t1.username, SUM(t2.points) AS total 
FROM Table2 t2
JOIN Table1 t1 ON t1.userid = t2.userid  
WHERE t2.date BETWEEN (CURDATE() - INTERVAL 1 DAY) AND CURDATE()     
GROUP BY t1.username 
ORDER BY total DESC 
LIMIT 10;

笔记:
mysql_* 已弃用,您不应该使用它...您应该使用参数化查询切换到 PDO 或 mysqli..

阅读参数化 here as well as a good way to prevent sql injection incase you ever need to pass in variables

您的查询
SELECT Table1.username, SUM(Table2.points) AS total 
FROM Table2  
WHERE  Table2.date BETWEEN (NOW() - INTERVAL 1 DAY) AND NOW() 
^------------------------------------------------------------^ = bad this should be your JOIN first and then WHERE
INNER JOIN Table1 ON Table1.userid = Table2.userid 
GROUP BY Table1.username 
ORDER BY SUM(Table2.points) DESC LIMIT 10

我的查询
SELECT t1.username, SUM(t2.points) AS total 
FROM Table2 t2
JOIN Table1 t1 ON t1.userid = t2.userid  
WHERE t2.date BETWEEN (CURDATE() - INTERVAL 1 DAY) AND CURDATE()     
GROUP BY t1.username 
ORDER BY total DESC 
LIMIT 10;

注意 WHERE 在 JOIN 之后但在 GROUP BY 之前...

关于php - 错误是查询连接和日期/时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26409384/

相关文章:

mysql - 子查询销售和库存

php - 获取MySQL中两个日期相差的天数

php - 如何使用 PHP Foreach 每次回显两个项目?

mysql - 如果 where 语句不匹配,如何显示表的所有行但具有默认值

php - 如何从 sql 数据库的一列填充 php 数组?

MySQL使两列唯一

javascript - 数据库和UI的CRUD操作最佳实践

php - 在 Php $db->select 上选择数据库

php - 查找最低可用功能

php - 无法在php中创建表