我有一些代码:
?>
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)。
出了什么问题?是关于重新加载页面?因为当我继续下去时,它再次起作用。
答案 0 :(得分:0)
如果2个查询一起运行,则它们可能会获得相同的max(nim)
值。然后他们会生成相同的$IDbaru
来插入。如果nim
恰好是表的主键,则后面的插入查询肯定会失败。
我建议:
使用简单整数作为表ID
使用auto_increment
。这意味着如果您没有指定id
,服务器将为您生成它而不会重复。
更改表格的AUTO_INCREMENT
值以符合您的ID策略。例如,
ALTER TABLE tb_mahasiswa AUTO_INCREMENT = 201353000;