gpt4 book ai didi

php - MySQL select 在 WHERE 子句中进行日期时间比较会导致 PHP 错误

转载 作者:行者123 更新时间:2023-11-29 23:12:11 27 4
gpt4 key购买 nike

我有一个 MySQL 选择查询,WHERE 子句中只有很少的连接和多个条件。我在比较列 datestart 时遇到问题和dateend 。这些可以适合给定的术语,也可以为空。两者的MySQL数据类型都是datetime 。查询有问题的部分如下:AND (a.datestart > '".$datestart."' AND a.dateend < '".$dateend."') OR (a.datestart > '".$datestart."' AND a.dateend is null) OR (a.datestart is null AND a.dateend < '".$dateend."') OR (a.datestart is null AND a.dateend is null))如果我在没有这部分的情况下运行查询,它运行良好。如果使用,我会收到以下错误:Fatal error: Call to a member function fetch_assoc() on a non-object在线 while($rows = $result->fetch_assoc()) 。我已经使用a.something语法位于查询的前面,因此连接工作正常。有什么想法吗?

编辑:根据请求发布整个查询(不是来自代码,而是具有特定示例值的示例。如果您需要 php 代码,我也会添加它)。

SELECT a.id AS id, t.title AS title, t.shortDescription AS shortDescription, p.prices_value AS prices_value, c.symbol AS symbol, a.rating AS rating FROM tblactivity a inner join tblactivitytranslations t on a.id = t.activityId inner join tblprices p on a.price = p.id inner join tblcurrencies c on p.currency = c.id WHERE t.lang = '0' AND t.title LIKE '%Some%' AND p.currency = '0' AND (false or (prices_value >= 0 and prices_value <= 25) or (prices_value >= 25 and prices_value <= 50) or (prices_value >= 50 and prices_value <= 75) or (prices_value >= 75 and prices_value <= 100) or (prices_value >= 100)) AND (a.datestart > '2000-1-1' AND a.dateend < '2079-1-1') OR (a.datestart > '2000-1-1' AND a.dateend is null) OR (a.datestart is null AND a.dateend < '2079-1-1') OR (a.datestart is null AND a.dateend is null))

最佳答案

再次检查您的 SQL 查询。 WHERE 子句中的括号没有相加。您以 null 后面的双括号结束,而没有成对的左括号。

此外,还有一个 false 卡在没有定义的列上(这可能是 SO 帖子上的一个拼写错误,因为您提到您删除了最后一条语句并且一切都运行良好)。

顺便说一句,您的 WHERE 子句可能有冗余。 prices_value 的条件之一:

(prices_value >= 0 and prices_value <= 25) 
or (prices_value >= 25 and prices_value <= 50)
or (prices_value >= 50 and prices_value <= 75)
or (prices_value >= 75 and prices_value <= 100)
or (prices_value >= 100)

可以将所有 OR 子句组合成一个包含条件,因为所有端点都连接并超过 100:

(prices_value >= 0) 

关于php - MySQL select 在 WHERE 子句中进行日期时间比较会导致 PHP 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28016216/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com