使用一个查询更新多个MySQL记录

时间:2012-12-13 23:31:40

标签: php mysql sql-update

我想只使用一个提交按钮来更新同一个表中的多个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查询?我似乎无法弄清楚数组/循环的正确组合来实现它。如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

您可以在表单中携带带有标记名称的tagIds。我假设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
  }

} 
?>