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

时间:2013-08-28 08:41:13

标签: php mysql

如何将答案的说明更新到我的数据库?

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

每当我点击更新时,问题描述都不会更新答案。

我添加了一些代码......

这是我的新代码,但它似乎无法正常工作:

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

2 个答案:

答案 0 :(得分:0)

不要在

中使用$ 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());
    }

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

答案 1 :(得分:0)

而不是:

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

注意用“$ sql”替换“$ x”,就像在第一个for循环中一样。