Как вставить следующий самый высокий номер в базу данных

У меня есть кусок кода 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.

Кто-нибудь знает, как это можно достичь. Любая помощь приветствуется 🙂

благодаря

Solutions Collecting From Web of "Как вставить следующий самый высокий номер в базу данных"

Измените TeacherId с varchar на 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 и поместите в свой новый идентификатор. Например:

 $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 ; 

и после вставки его в таблицу: