【问题标题】:Selecting the most recent insert with db_select使用 db_select 选择最近的插入
【发布时间】:2014-07-25 17:30:14
【问题描述】:

我对 drupal 中的 db_select 查询有疑问:

  db_insert('CON_CON')
    ->fields(array(
            'surname' => $form_state['values']['surname'],
            'firstname' => $form_state['values']['firstname'],

    ))->execute();
   $hasCONID = db_select('CON_CON', 'n')
        ->fields('n',array('CONID'))
        ->condition('surname', $form_state['values']['surname'], '=')
        ->execute()
        ->fetchfield()



   db_insert('CASL_NEW')
        ->fields(array(
            'CONID' => $hasCONID,

    ))->execute();

这将返回列的 CONID,其中列的姓氏与表单的姓氏相匹配。但是有可能会有重复的姓氏,那么我可以放入一个返回表中最近插入的条件吗?或者选择在特定时间生成的所有行?还是有其他方法可以确保它选择最新的姓氏而不是另一个重复的姓氏?

【问题讨论】:

  • 不确定如何在 Drupal 中执行此操作(您可能需要创建自己的函数来扩展 Drupal 函数)但您可以在插入函数末尾使用新的 PDO return $db->lastInsertId('yourIdColumn'); 返回最后一个 ID...然后您可以将其用作搜索查询的参数

标签: php mysql sql forms drupal


【解决方案1】:

尝试使用db_last_insert_id

db_query("INSERT INTO {table}(name) VALUES ('value')");
echo db_last_insert_id('table_name', 'name');

【讨论】:

  • db_last_insert_id() 在 Drupal 7 中被删除,这个问题只针对 Drupal 7。我无法想象为什么会被接受,这是完全错误的。
猜你喜欢
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2018-08-20
  • 2012-05-26
  • 1970-01-01
  • 2020-03-09
  • 2021-04-21
  • 2013-04-16
相关资源
最近更新 更多