【问题标题】:How I can use 'OR' in my db queries [closed]我如何在我的数据库查询中使用“或”[关闭]
【发布时间】:2025-12-05 21:00:01
【问题描述】:

我真正想要的是:

$query = db_select('watchdog', 'wa');
$query->orderBy('wa.timestamp', 'DESC')
        ->condition('blablabla', 'closed', '=') or 
          ('blablabla', 'blabla', '=')
           or ('blablabla', 'balblabla', '=')
        ->range(0, 20);
  $result = $query->execute();

我想用 or 设置很多条件,但我不知道如何写下来..

【问题讨论】:

  • 试试我的答案,让我知道它是否有效。
  • 我投票结束这个问题,因为它属于drupal.stackexchange.com 站点。

标签: mysql sql database drupal drupal-7


【解决方案1】:

默认设置为AND,要使用or,你必须这样做

  $query = db_select('watchdog', 'wa');
    $query->orderBy('wa.timestamp', 'DESC');
    $or = db_or();
    $or->condition('blablabla', 'closed', '=');
    $or->condition('blablabla', 'blabla', '=');
    $or->condition('blablabla', 'balblabla', '=');
    $query->condition($or);
    $query->range(0, 20);

    $result = $query->execute();

【讨论】:

  • 您能告诉我如何在我的代码中执行此操作吗?
  • 根据您的需要进行了编辑
  • 还有 db_select 和范围?它们将如何显示?
【解决方案2】:
$query = db_select('watchdog', 'wa');
//your condition
$condition = db_or()
  ->condition('blablabla', 'closed', '=')
  ->condition('blablabla', 'blabla', '=')
  ->condition('blablabla', 'balblabla', '=');

$query->condition($condition)
      ->orderBy('wa.timestamp', 'DESC')
      ->range(0, 20);
$result = $query->execute();

试试上面的代码。

【讨论】:

  • 它有效,但第一个答案更快......:/