【问题标题】:How to insert the next highest number into the database如何将下一个最大的数字插入数据库
【发布时间】:2012-08-23 16:57: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 的“Teacher”表如下所示:

TeacherId

T1
T2
T3
T4

那么当我插入一个新的TeacherId值时,它应该插入T5,这是因为T4是当前最高的T编号,所以下一个编号应该是T5。

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

谢谢

【问题讨论】:

  • 是否需要采用这种格式?因为否则你可以用 auto_increment 把它作为主键,你可以让数据库来处理它。
  • 你有没有考虑设置这个字段AUTO_INCREMENT
  • 我知道自动增量,但有人告诉我 ID 应该包含 T,然后跟一个数字
  • 你需要某种序列生成器来处理这类事情。这通常是某种带有计数器的辅助表。

标签: php mysql database mysqli


【解决方案1】:

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

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

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

如果您必须添加T,您可以随时使用CONCAT 或在php 代码中执行此操作。

【讨论】:

  • 因此,如果我将 TeacherId 更改为 int,它是否允许值 T1、T2、T3 等,因为我认为 int 不允许“T”?
【解决方案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

我没有测试过这段代码。

【讨论】:

    【解决方案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 ;
    

    将其插入表格后:

    ...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-11
      • 2018-03-13
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 2015-03-31
      • 2016-12-11
      • 2022-08-12
      相关资源
      最近更新 更多