2012-12-13 181 views
-1

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

+0

第一个问题,你会得到一个TagField发送回'TagField'改变'TagField []'。并显示你试过的一些代码 –

回答

0

您可以在窗体中携带带tag标签的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 
    } 

} 
?> 
+0

非常感谢!这对我有效。我是PHP阵列的新手,所以这非常有帮助。 – tnt0932