0

データベースに値を挿入する場所に記述した 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 の "Teacher" テーブルが次のようになっている場合:

TeacherId

T1
T2
T3
T4

次に、新しい TeacherId 値を挿入すると、挿入する必要がありますT5。これは、T4 が現在の最大の T 番号であるため、次の番号は T5 である必要があるためです。

これを達成する方法を知っている人はいますか。どんな助けでも大歓迎です:)

ありがとう

4

3 に答える 3

3

TeacherIdから に変更varcharintます。create テーブルは次のようになります。

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

auto_increment1 から始まり、挿入ごとに自動的に 1 ずつ増加します。

を先頭に追加する必要がある場合は、いつでも、または php コードでT行うことができます。CONCAT

于 2012-08-23T17:00:06.890 に答える
0

このようなことができます。これは、フォーマットされた列を持つ自動インクリメント主キー列です。私はこれをテストする機会がありませんでした。

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

このコードはテストしていません。

于 2012-08-23T17:34:16.263 に答える
0

これを試すことができます:

最初にテーブル内の行の総数を取得し、それを 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 ;

そしてそれをテーブルに挿入した後:

...

于 2012-08-23T18:33:18.577 に答える