У меня есть кусок кода 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.
Кто-нибудь знает, как это можно достичь. Любая помощь приветствуется 🙂
благодаря
Измените 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 ;
и после вставки его в таблицу:
…