如何在数据库中插入下一个最高数字


How to insert the next highest number into the database

我写了一段mysqli代码,它将在数据库中插入值:

$insertsql = "
INSERT INTO Teacher
    (TeacherId, TeacherForename, TeacherSurname, TeacherEmail, TeacherAlias, TeacherUsername, TeacherPassword, Active, Code)
  VALUES
    (?, ?, ?, ?, ?, ?, ?, ?, ?)
";
if (!$insert = $mysqli->prepare($insertsql)) {
  // Handle errors with prepare operation here
}
$teacherid = ;
$insert->bind_param("sssssssss", $teacherid, $getfirstname, $getsurname,
             $getemail, $getteachid, $getuser,
             $password, $active, $code);
$insert->execute();
if ($insert->errno) {
  // Handle query error here
}
$insert->close();

但我有一个小问题。目前,我将$teacherid变量留空,但我希望这个变量能从数据库中找到最后一个"TeacherId",并通过插入下一个"TeacherId"来插入一个新的。

例如:

如果TeacherId:的"教师"表是这样的

TeacherId
T1
T2
T3
T4

然后,当我插入一个新的TeacherId值时,它应该插入T5,这是因为T4是当前最高的T数,所以下一个数字应该是T5。

有人知道如何做到这一点吗。任何帮助都将不胜感激:)

感谢

TeacherIdvarchar更改为int。创建表看起来有点像这样:

CREATE TABLE Teacher (
   TeacherId int unsigned not null auto_increment primary key

auto_increment将从1开始,并在每次插入时自动增加1。

如果必须准备T,则可以始终使用CONCAT或在php代码中执行。

您可以这样做。它是一个带格式化列的自动递增主键列。我还没有机会对此进行测试。

CREATE TABLE Teacher (
  TeacherId mediumint UNSIGNED AUTO_INCREMENT PRIMARY_KEY,
  TeacherIdF varchar(6) AS 'T_' + CONVERT(varchar, TeacherId),
  ...
  CONSTRAINT Teacher_UKey01 UNIQUE (TeacherIdF)
)

如果约束不起作用,则可以创建一个触发器,该触发器将在插入行后更新列。

CREATE TABLE Teacher (
  TeacherId mediumint UNSIGNED AUTO_INCREMENT PRIMARY_KEY,
  TeacherIdF varchar(6) NULL
  ...
)
CREATE TRIGGER FormattedTeacherId
AFTER insert ON Teacher
BEGIN
UPDATE Teacher SET TeacherIdF = CONCAT('T', TeacherId)
END

我还没有测试过这个代码。

你可以试试这个:

首先获取表中的总行数,并将其递增1,然后将其放入新的id中。例如:

$selectUsers = mysql_query ("SELECT * FROM `Teacher`") or die(mysql_error());
$num_rows = mysql_num_rows($selectUsers);
$next_id = $num_rows+1;
$new_id = 'T'.$next_id ;

并在将其插入表格后: