db_select 将所有值发送给我,而不是我想要的

db_select send me all the values and not what I want

我想要的是检查变量是否 = 变量和时间戳 > 时间戳,如果这是真的,删除旧值并创建新值 我认为上面的代码只是创建所有值,因为它不会删除旧值.如何在创建新的同时删除旧的?

$query = db_select('watchdog', 'th')
    ->extend('PagerDefault')
    ->orderBy('wid')
    ->fields('th', array('variables', 'type', 'severity',
         'message', 'wid', 'timestamp'))
    ->limit(2000);

  // Fetch the result set.
  $result = $query -> execute();

  // Loop through each item and add to $row.
  foreach ($result as $row) {
    blabla($row);
  }


  function blabla($row)
    $timestamp = $row -> timestamp;
    $r = db_select('distinct', 'b')
      ->fields('b')
      ->condition('variables', $variables, '=')
      ->condition('timestamp', $timestamp, '>')
      ->execute();
    if($r -> rowCount() == 0) {
    $query = db_delete('error_log_jira')
      ->fields('b', array('timestamp', 'wid', 'variables',))
      ->execute();
    $query = db_insert('distinct')
      ->fields(array(
        'timestamp' => $timestamp,
        'wid' => $wid,
        'variables' => $variables,
     ))
     ->execute();
    }

此代码完美运行

$r = db_select('blabla', 'b')
      ->fields('b')
      ->condition('variables', $variables, '=')
      ->execute();

您在代码示例中使用的是 <(小于)而不是 >(大于)。

$r = db_select('blabla', 'b')
  ->fields('b')
  ->condition('variables', $variables, '=')
  ->condition('timestamp', $timestamp, '>')
  ->execute();

如果要调试和查看执行的查询,可以使用 dpq() 函数(devel 模块的一部分):https://api.drupal.org/api/devel/devel.module/function/dpq/7