【问题标题】:db_select send me all the values and not what I wantdb_select 向我发送所有值,而不是我想要的
【发布时间】:2015-03-13 13:09:00
【问题描述】:

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

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

【问题讨论】:

  • php中没有db_select()这样的函数你有没有想到:drupal.stackexchange.com/questions/90944/…,在这种情况下,你在stackoverflow的错误部分。
  • 我更新了我的代码,你现在可以帮助我!!!

标签: php mysql database drupal drupal-7


【解决方案1】:

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

$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

【讨论】:

  • 如果我使用 它会向我显示表的所有值,我无法理解它在做什么:' ( :'(
  • 你的$timestamp值可能有问题,是什么问题?你如何获得时间戳?
  • 我更新了我认为我在 db_delete 函数中有错误的代码
猜你喜欢
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 2014-11-30
相关资源
最近更新 更多