我有一个查询,我用它来获得比给定时间戳更新的结果。它应该找到由给定用户发送和接收的所有新消息。问题是,无论我将timestamp参数更改为什么,我甚至将其更改为'g',我仍然得到4个结果。时间戳似乎不会改变我的查询。在表中,时间戳是int(11)
。我尝试使用intval并将bindvalue定义为param int但仍然没有运气。有什么想法吗?
$sql = 'SELECT timestamp, user, message, receiver, convo_id
FROM chatbox
WHERE user = ?
OR receiver = ?
AND timestamp = ?
ORDER BY timestamp DESC';
$stmt = $conn->prepare($sql);
$stmt->bindValue(1,'username');
$stmt->bindValue(2,'username');
$stmt->bindValue(3,'g');
$stmt->execute();
答案 0 :(得分:3)
你不应该在你的$ sql变量中这样做吗?
AND timestamp > ?
答案 1 :(得分:3)
我怀疑它是where子句中AND和OR的优先级。尝试使用括号:
WHERE ( user = ? OR receiver = ? )
AND timestamp = ?
假设这就是你所需要的。