我想要的是检查变量是否=变量AND时间戳>时间戳,如果为true,则删除旧值并创建新值。我认为上述代码只是创建了所有值,因为它不会删除旧值。创建新旧版时如何删除旧版?

$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

关于php - db_select向我发送所有值,而不是我想要的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29033072/

10-11 03:32