2013-08-17 46 views
1

我想在每次用戶創建考試時插入順序項目編號。 每次他創建一個考試,它重新啓動到1.我非常需要你的幫助,人。更多的權力。 :)如何添加序列號到我在mysql/php ps中的插入查詢中。不自動增量

這裏是我的代碼:

$examid = $_SESSION['examid']; 
$itemnum = 1; 

$sql = mysql_query("INSERT INTO exam_questions (question_description, question_type, question_exam_id) VALUES ('$question', '$type', '$examid')")or die(mysql_error()); 
$lastinsertid = mysql_insert_id(); 
mysql_query("UPDATE exam_questions SET question_set_id='<??????????>' WHERE question_id='$lastinsertid' LIMIT 1")or die(mysql_error()); 
+0

您可以使用自動增量列作爲具有一些數據庫引擎的組合主鍵的一部分,對於其他組合鍵列的每次更改,它將從1重新啓動其自動增量。 –

回答

1

嘗試用這樣一個連接:

UPDATE exam_questions eq cross join 
     (select max(question_set_id) as qsi 
     from exam_questions 
     where question_id='$lastinsertid' 
     ) as const 
    SET eq.question_set_id = const.qsi + 1 
    WHERE question_id='$lastinsertid'; 
+0

當更新表時,它被鎖定,並且不能選擇從它在相同的查詢。 –

+0

@Kinkink。 。 。該限制不適用於'連接'中使用的表。你可以在SQL Fiddle上看到一個例子(http://www.sqlfiddle.com/#!2/8c068/1)。 –

+0

啊,夠公平的。聰明。 –

0

你可以嘗試這樣的事:

SELECT COUNT(`id`) INTO @tmpvar FROM `exam_questions` WHERE `question_exam_id`='$examid'; 
INSERT INTO `exam_questions` 
    (`question_description`,`question_type`,`question_exam_id`,`question_id`) 
    VALUES ('$question','$type','$examid',@tmpvar+1); 

注意那些意志必須作爲獨立的mysql_query電話發送,但它應該很好地工作。我還假設你已經正確地轉義了你的參數。

相關問題