使用嵌套的for循环更新数据库


Update database with nested for loops?

如何将答案的描述更新到数据库中?

我有一个用于更新问题描述的工作代码。

每当我点击更新时,只有问题描述在更新,而不是答案。

我添加了一些代码。。。

这是我的新代码,但似乎也不起作用:

for ($i = 0; $i < sizeof($selected); $i++)
{
    $sql = sprintf("UPDATE exam_questions SET question_description = '%s' WHERE question_id = '%s'", 
           mysql_real_escape_string($question[$i]), 
           mysql_real_escape_string($selected[$i]));
    mysql_query($sql)or die(mysql_error());
    $sql = mysql_query("SELECT * FROM exam_answers WHERE answer_question_set_id = '".$selected[$i]."'")or die(mysql_error());
    $count=mysql_num_rows($sql);
    for($e = 0; $e<$count; $e++){
    $sql = sprintf("UPDATE exam_answers SET answer_description = '%s' WHERE answer_question_set_id = '%s'",
           mysql_real_escape_string($answer[$e]), 
           mysql_real_escape_string($answerid[$e]));
    mysql_query($sql)or die(mysql_error());
    }
}

不要在中使用$x

for($x = 0; $x < sizeof($answer); $x++){
    **$x** = sprintf("UPDATE exam_answers SET answer_description = '%s' WHERE answer_question_set_id = '%s'",
           mysql_real_escape_string($answer[$x]), 
           mysql_real_escape_string($answerid[$x]));
    mysql_query($x)or die(mysql_error());
    }

相反,使用您选择的另一个变量。这会使你的循环变得复杂。

而不是这个:

for($x = 0; $x < sizeof($answer); $x++){
    $x = sprintf("UPDATE exam_answers SET answer_description = '%s' WHERE answer_question_set_id = '%s'",
           mysql_real_escape_string($answer[$x]), 
           mysql_real_escape_string($answerid[$x]));
    mysql_query($x)or die(mysql_error());
}

你应该这样做:

for($x = 0; $x < sizeof($answer); $x++){
    $sql = sprintf("UPDATE exam_answers SET answer_description = '%s' WHERE answer_question_set_id = '%s'",
           mysql_real_escape_string($answer[$x]), 
           mysql_real_escape_string($answerid[$x]));
    mysql_query($sql)or die(mysql_error());
}

注意将"$x"替换为"$sql",就像第一个for循环中一样。