2013-08-28 50 views
0

我有两个数组选择和questiondesc,我想更新到数据库,但我的代码似乎没有工作。是否可以为每个嵌套进行嵌套?使用foreach在mysql和php

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

是的,你可以做的foreach的foreach。你可以筑巢只要你需要。如果你写了什么样的错误会更好?你是否打探过查询? – Fixus

回答

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

请记住,上述假设的问题和选择是有序的相同。

+0

谢谢老兄。效果很好。 –

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

改变这一行:

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