【问题标题】:working with foreach in mysql and php在 mysql 和 php 中使用 foreach
【发布时间】:2013-08-28 05:41:52
【问题描述】:

我有两个数组 selected 和 questiondesc,我想将它更新到数据库,但我的代码似乎不起作用。是否可以为每个嵌套?

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

【问题讨论】:

  • 是的,你可以在 foreach 中做 foreach。你可以嵌套只要你需要。如果你写你得到什么样的错误会更好?你调试过查询吗?

标签: php mysql arrays foreach


【解决方案1】:

您可以改用for 并确保正确清理您的数据:

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

请记住,以上假设问题和选择的顺序相同。

【讨论】:

    【解决方案2】:

    改变这一行:

    mysql_query("UPDATE exam_questions 
                    SET question_description = '$question' 
                  WHERE question_id = '$enable' ")or die(mysql_error());
    

    【讨论】:

      【解决方案3】:
      <? 
          $i =0;
          while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)): 
      ?>
      
      <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_<?=$i?>" type="text"  size="50" />/td>
      
      <td width="549" colspan="2" scope="col"><div align="left"></td>
      </tr>
      
      <? 
           $i ++;
           endwhile; 
      ?>
      
      if(isset($_POST['selected'])){
      
        $selected = $_POST['selected'];
      
        foreach($selected as $id){
            $key = 'questiondesc_' . $id;
            $question = $_POST[$key];
            $sql = "UPDATE exam_questions SET question_description = '" . $question . "' WHERE question_id = '" . $id . "'";
            mysql_query($sql)or die(mysql_error());
         } 
      }
      

      【讨论】:

        猜你喜欢
        • 2015-11-22
        • 2015-12-27
        • 1970-01-01
        • 1970-01-01
        • 2013-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-16
        相关资源
        最近更新 更多