如何插入下一个最高数到数据库(How to insert the next highest numb

2019-07-31 03:24发布

我有一块我写在那里将值插入数据库的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。

有谁知道如何可以做到这一点。 任何帮助将非常感激 :)

谢谢

Answer 1:

更改TeacherIdvarcharint 。 创建表看起来有点像这样:

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

auto_increment会从1开始,对每个插入由1自动增加。

如果你必须在前面加上了T ,你可以随时做CONCAT或PHP代码。



Answer 2:

你可以做这样的事情。 这是一个自动递增的主键列与列的格式。 我还没有机会测试此。

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

我没有测试此代码。



Answer 3:

那么你可以试试这个:

首先让行的总数在表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 ;

然后将其插入后到表:

...



文章来源: How to insert the next highest number into the database