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();

3 番目のステートメント は->or('cid2', $form['cid']['#value'], '=')機能しません。

cid1またはcid2のデータベース内のレコードを一致させる必要があります。

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();

drupalWebサイトの例も役立つ場合があります。

$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 に答える