代码之家  ›  专栏  ›  技术社区  ›  Morgan Cheng

如何从WordPress数据库获取最后插入的行ID?

  •  76
  • Morgan Cheng  · 技术社区  · 15 年前

    我的WordPress插件有一个带有 自动增量 名为i d的主键字段。在表中插入新行时,我想获取插入的i d值。

    该特性是使用Ajax将数据发布到服务器以插入到数据库中。在Ajax响应中返回新的行ID以更新客户机状态。可能多个客户机同时向服务器发送数据。因此,我必须确保每个Ajax请求都得到响应中准确的新行ID。

    在PHP中,有一个方法 MySQL语言 但是,只有当参数为 林克标识符 最后一次操作。我对数据库的操作在$wpdb上。如何提取 林克标识符 从$wpdb确保mysql_insert_id有效?有没有其他方法从$wpdb获取最后插入的行ID?

    谢谢。

    4 回复  |  直到 8 年前
        1
  •  154
  •   kamal pal    8 年前

    就在那之后 $wpdb->insert() 完成插入,执行以下操作:

    $lastid = $wpdb->insert_id;
    

    关于如何用WordPress方式做事情的更多信息,可以在WordPress codex中找到。上面的详细信息在 wpdb class page

        2
  •  12
  •   Francisco Corrales Morales    10 年前

    我就是这么做的,在我的代码里

     ...
     global $wpdb;
     $query =  "INSERT INTO... VALUES(...)" ;
     $wpdb->query(
            $wpdb->prepare($query)
    );
    return $wpdb->insert_id;
    ...
    

    More Class Variables

        3
  •  0
  •   kamal pal    8 年前

    类似的事情也应该这样做:

    $last = $wpdb->get_row("SHOW TABLE STATUS LIKE 'table_name'");
    $lastid = $last->Auto_increment;
    
        4
  •  -4
  •   Ollie Saunders    15 年前

    把电话转到 mysql_insert_id() 在事务内部,应该执行以下操作:

    mysql_query('BEGIN');
    // Whatever code that does the insert here.
    $id = mysql_insert_id();
    mysql_query('COMMIT');
    // Stuff with $id.