douyong4623 2013-08-28 05:41
浏览 53
已采纳

在mysql和php中使用foreach

I have two arrays the selected and questiondesc, I want to update it to the database but My code doesnt seem to work. Is it possible to do nested for each?

<?php do { ?>
    <tr>
        <th width="170" scope="col">
            <input type="checkbox" name="selected[]"
                   value="<?php echo $row_Recordset1['question_id'];?>"/>
            Description:
        </th>
        <td colspan="2" scope="col">old:
            <?php echo $row_Recordset1['question_description']; ?>
            new:<input name="questiondesc[]" type="text" size="50"/>/td>
        <td width="549" colspan="2" scope="col">
            <div align="left">
        </td>
    </tr>
<?php
} while ($row_Recordset2 = mysql_fetch_assoc($Recordset2));

if (isset($_POST['selected'])) {
    $selected = $_POST['selected'];
    $question = $_POST['questiondesc'];

    foreach ($selected as $enable) {
        mysql_query("
          UPDATE exam_questions
          SET question_description = '$question'
          WHERE question_id = '$selected'
        ") or die(mysql_error());
    }
}
  • 写回答

3条回答 默认 最新

  • dth54864 2013-08-28 05:46
    关注

    You could use a for instead and make sure to properly sanitize your data:

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

    Keep in mind that the above assumes that questions and selections are ordered the same.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?