【问题标题】:Or statement in PDO或 PDO 中的声明
【发布时间】:2021-03-02 01:48:51
【问题描述】:

我有一个非常愚蠢的问题, 我想在 pdo 中选择 id_employe 为 0 或 1 的计数行,但我不知道该怎么做 这就是我所做的:

$connexion = connexion();
$request_travail = $connexion->prepare("SELECT COUNT(*) AS heures FROM plannings WHERE id_employe = ? AND id_affectation = ? OR id_affectation = ? AND id_validation = ?");

$resultat = $request_travail->execute(array($vendeur, 0, 1, 1));
$heures = $resultat->heures;

另外,像上面那样使用count可以吗?

【问题讨论】:

  • 仅供参考:PDO 不执行您的查询。它做一个数据库服务器,假设 mysql
  • AND 和 OR 具有不同的优先顺序。使用括号覆盖默认顺序。我们可以避免使用 IN 例如 OR ... AND id_affectation IN ( ? , ? ) AND ...

标签: php mysql sql count where-clause


【解决方案1】:

您需要在 ORed 条件周围加上括号,因为布尔运算符 OR 的优先级低于 AND

WHERE id_employe = ? 
  AND (id_affectation = ? OR id_affectation = ?)
  AND id_validation = ?

但这用IN表示更简单:

WHERE id_employe = ? 
  AND id_affectation IN (?, ?)
  AND id_validation = ?

【讨论】:

    猜你喜欢
    • 2013-09-14
    • 1970-01-01
    • 2021-11-26
    相关资源
    最近更新 更多