如何在mysql / php中为插入查询添加序列号是。不是auto_increment

时间:2013-08-17 11:58:52

标签: php mysql

我想在每次用户创建考试时插入一个顺序项目编号。 每当他创建一个考试时,它都会重新开始1.我非常需要你的帮助,人们。更多力量。 :)

这是我的代码:

$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());

2 个答案:

答案 0 :(得分: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';

答案 1 :(得分: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调用发送,但它应该可以很好地工作。我还假设您已正确转义参数。