我正在运行这段代码:
$sql = "SELECT IF(TIMEDIFF(NOW(),last_update) > '02:00:00',1,0) AS morethan FROM products LIMIT 1";
if($stmt = $this->connect->prepare($sql)) {
$stmt->execute();
$stmt->bind_result($result);
$stmt->fetch();
$stmt->close();
} else {
return false;
}
return $result;
我得到0
,这意味着找不到我正在检查的差异?
答案 0 :(得分:3)
Mysql IF的工作原理如下:
IF(condition, true, false)
你在结果中收到0“更多”,这意味着
TIMEDIFF(NOW(),last_update) > '02:00:00'
是假的,换句话说,dateiff小于02:00:00
答案 1 :(得分:2)
您只需删除IF
:
SELECT (TIMEDIFF(NOW(),last_update) > '02:00:00') morethan FROM products LIMIT 1
您的查询实际上会非确定地从表格产品中获取一行(这意味着您无法预测哪一行),并检查它是否与您的条件匹配。如果是,则查询将返回1
,否则返回0
。我想那不是你的意图,对吗?
如果要检查是否有任何符合该条件的行,您可以执行此操作:
select 1 existsInTable from products
where TIMEDIFF(NOW(),last_update) > '02:00:00'
limit 1
只要找到匹配项,这将返回1
,如果找不到匹配项,则返回空结果集。您甚至不需要检查返回的值,因为您可以使用mysql_num_rows
计算查询返回的intem数量。