我想只使用一个提交按钮来更新同一个表中的多个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 :(得分: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
}
}
?>