-1

我想从同一个表中更新多个 MySQL 记录,只使用一个提交按钮。

这是我用来生成表单的代码的简单版本:

<form action='' method='post'> 
    <?php 
    $sql = "SELECT TagName, TagID FROM tags";
    $result = mysql_query($sql) or die ($sql. '-error' .mysql_error());

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        echo "<input type='text' name='TagField' value='".$row['TagName']."'>";
    }
    ?>
    <input type="submit" name="tag_edit_submit" value="Edit">
</form>

我可以使用哪种 UPDATE 查询?我似乎无法弄清楚数组/循环的正确组合来实现它。如果您需要更多信息,请告诉我。

4

1 回答 1

0

您可以在表单中携带带有标签名称的 tagId。我假设 tagIds 计数和 tagNames 计数是相同的。

<form action='' method='post'> 
    <?php 
    $sql = "SELECT TagName, TagID FROM tags";
    $result = mysql_query($sql) or die ($sql. '-error' .mysql_error());

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        echo "<input type='hidden' name='TagIDs[]' value='".$row['TagID']."'>";
        echo "<input type='text' name='TagNames[]' value='".$row['TagName']."'>";
    }
    ?>
    <input type="submit" name="tag_edit_submit" value="Edit">
</form>


<?php 
$p=$_POST;
if( isset($p['TagNames']) && is_array($p['TagNames'] )) {

  foreach($p['TagNames'] as $key=>$name){

    $tagId= $p['TagIds'][$key];

    // validate and clean up sql injections from $tagId and $name

    $sql='update tags set TagName="'.$name.'" where TagID=".$tagId." limit 1';
    // execute the query
  }

} 
?>
于 2012-12-13T23:44:52.940 回答