生成自增ID的方式有很多种,这里采用的是mysql单独建一张表来获取自增ID

生成自增ID的方式有很多种,这里采用的是mysql单独建一张表来获取自增ID


创建表的sql语句

CREATE TABLE `wx_article_auto_increment` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `stub` char(1) COLLATE utf8_bin NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `stub` (`stub`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

php代码

/**
 * 获取分表自增ID
 *
 * @param string $table 自增ID表名
 * @return mixed ID
 */
function get_last_insert_id($table){
    // 参数
    $prefix = Config :: get('database.prefix');
    $table = $prefix . $table;
    
    Db :: startTrans();
    try{
        $sql = "REPLACE INTO $table (stub) VALUES ('a')";
        Db :: execute($sql);
        
        $sql = 'SELECT LAST_INSERT_ID()';
        $result = Db :: query($sql);
        return $result[0]['LAST_INSERT_ID()'];
        
        // 提交事务
        Db :: commit();
    }catch ( \Exception $e ){
        // 回滚事务
        Db :: rollback();
    }
}