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):