即使我更改参数,也会得到相同的查询结果

时间:2011-05-26 05:00:48

标签: php mysql sql

我有一个查询,我用它来获得比给定时间戳更新的结果。它应该找到由给定用户发送和接收的所有新消息。问题是,无论我将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();

2 个答案:

答案 0 :(得分:3)

你不应该在你的$ sql变量中这样做吗?

AND timestamp > ?

答案 1 :(得分:3)

我怀疑它是where子句中AND和OR的优先级。尝试使用括号:

WHERE ( user = ? OR receiver = ?  )
  AND timestamp = ?

假设这就是你所需要的。