自动添加唯一代码PHP

时间:2014-06-14 18:49:48

标签: php

我有一些代码:

?>
mysql_connect("localhost", "root", "");
mysql_select_db("db_akademik");

$query = "SELECT max(nim) as idMaks FROM tb_mahasiswa";
$hasil = mysql_query($query);
$data  = mysql_fetch_array($hasil);
$nim = $data['idMaks'];

//mengatur 6 karakter sebagai jumalh karakter yang tetap
//mengatur 3 karakter untuk jumlah karakter yang berubah-ubah
$noUrut = (int) substr($nim, 6, 3);
$noUrut++;

//menjadikan 201353 sebagai 6 karakter yang tetap
$char = "201353";
//%03s untuk mengatur 3 karakter di belakang 201353
$IDbaru = $char . sprintf("%03s", $noUrut);

?>

它有效。但是当我添加一些记录直到3(003)或4(004)时,它停止并且没有改变(如果最后一条记录003,它仍然是003)。

出了什么问题?是关于重新加载页面?因为当我继续下去时,它再次起作用。

1 个答案:

答案 0 :(得分:0)

如果2个查询一起运行,则它们可能会获得相同的max(nim)值。然后他们会生成相同的$IDbaru来插入。如果nim恰好是表的主键,则后面的插入查询肯定会失败。

我建议:

  1. 使用简单整数作为表ID

  2. 使用auto_increment。这意味着如果您没有指定id,服务器将为您生成它而不会重复。

  3. 更改表格的AUTO_INCREMENT值以符合您的ID策略。例如,

    ALTER TABLE tb_mahasiswa AUTO_INCREMENT = 201353000;