0

我正在尝试执行以下代码:

            $state  =   db_select('webform_email_confirm', 'wec')
            ->fields('wec')
            ->condition('nid', $form['nid']['#value'], '=')
            ->condition('cid1', $form['cid']['#value'], '=')
            ->or('cid2', $form['cid']['#value'], '=')
            ->execute()
            ->fetchAssoc();

第三个语句 ,->or('cid2', $form['cid']['#value'], '=')不起作用。

我需要在cid1cid2中匹配我的数据库中的记录。

4

1 回答 1

4

您必须使用 db_or() 或 $query->where 构造。

请查看此页面以获取更多信息。

所以基本上,尝试:

$or = db_or()
         ->condition('cid1', $form['cid']['#value'])
         ->condition('cid2',  $form['cid']['#value']);

$state  = db_select('webform_email_confirm', 'wec')
        ->fields('wec')
        ->condition('nid', $form['nid']['#value'], '=')
        ->condition($or)
        ->execute()
        ->fetchAssoc();

drupal 网站上的示例也可能很有用:

$query
  ->condition('field1', array(1, 2), 'IN')
  ->condition(db_or()->condition('field2', 5)->condition('field3', 6))
// Results in:
// (field1 IN (:db_placeholder_1, :db_placeholder_2) AND (field2 = :db_placeholder3 OR field3 = :db_placeholder_4))
于 2012-08-30T12:32:51.667 回答