这个问题在这里已经有了答案:
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/