2012-08-23 45 views
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:

TeacherId 

T1 
T2 
T3 
T4 

然後,當我插入一個新的TeacherId值,它應該插入T5,這是因爲T4是當前最高的T號碼,所以下一個號碼應該是T5。

有誰知道這是如何實現的。任何幫助,將不勝感激:)

感謝

+0

是否需要採用該格式?因爲不然的話,你可以用auto_increment使它成爲主鍵,並且你可以讓數據庫處理它。 – andrewsi

+1

你有沒有考慮設置這個字段'AUTO_INCREMENT'? –

+0

我知道自動增量,但我被告知該ID應該包含T,然後跟上一個數字 – user1394925

回答

3

變化TeacherIdvarcharint。創建表看起來有點像這樣:

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

auto_increment從1開始,對每個插入由1自動增加。

如果您需要必須加上T,您可以隨時使用CONCAT或在php代碼中完成。

+0

因此,如果我將TeacherId更改爲int,它會允許值T1,T2,T3等,因爲我不認爲int會允許「T」? – user1394925

+0

它不會允許'T'。重讀我的答案。 –

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 

我還沒有測試過這段代碼。

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 ; 

和插入後,進入表格:

...

相關問題