首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP OR with MySQL和rowCount

PHP OR with MySQL和rowCount
EN

Stack Overflow用户
提问于 2017-08-22 16:59:03
回答 3查看 32关注 0票数 0

我想计算两个成员之间的对话次数。当用户1访问用户2的配置文件时,我会得到一个可见的结果。但是当用户2访问配置文件1时,我没有任何结果。

代码语言:javascript
复制
public function getNumberConversations($sender, $receiver) {

    $st = Database::getDatabase()->prepare("SELECT id, sender, receiver
        FROM conversation
        WHERE sender = ? AND receiver = ?
        OR receiver = ? AND sender = ?
    ");

    $st->execute(array($sender, $receiver, $receiver, $sender));

    return $st->rowCount();

  }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-22 17:01:56

我认为你应该改变

代码语言:javascript
复制
$st->execute(array($sender, $receiver, $receiver, $sender));

使用

代码语言:javascript
复制
$st->execute(array($sender, $receiver, $sender, $receiver));

在您的情况下,括号是可以的(并且优先)

票数 3
EN

Stack Overflow用户

发布于 2017-08-22 17:01:36

对条件使用大括号

代码语言:javascript
复制
public function getNumberConversations($sender, $receiver) {

    $st = Database::getDatabase()->prepare("SELECT id, sender, receiver
        FROM conversation
        WHERE (sender = ? AND receiver = ?)
        OR (receiver = ? AND sender = ?)
    ");

    $st->execute(array($sender, $receiver, $sender, $receiver)); // also notice this

    return $st->rowCount();

  }
票数 2
EN

Stack Overflow用户

发布于 2017-08-22 17:02:07

对于分隔条件,您需要加上括号。此外,您在这两个上交换条件,因此它将变得相同。尝试以下答案:

代码语言:javascript
复制
public function getNumberConversations($sender, $receiver) {

    $st = Database::getDatabase()->prepare("SELECT id, sender, receiver
        FROM conversation
        WHERE (sender = ? AND receiver = ?)
        OR (receiver = ? AND sender = ?)
    ");

    $st->execute(array($sender, $receiver, $sender, $receiver)); //<----change here also

    return $st->rowCount();

  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45813194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档