我有一个PHP代码,它从数据库中选择行并将数据放在表单字段中:
$global_sql2="SELECT name, field, value FROM global_settings";
$global_rs2=mysql_query($global_sql2,$conn) or die(mysql_error());
while($global_result2=mysql_fetch_assoc($global_rs2))
{
echo '<tr>
<td><strong>'.$global_result2["name"].'</strong></td>
<td><input type="text" name="'.$global_result2["field"].'" size="50" value="'.$global_result2["value"].'" /></td>
</tr>';
}
然后提交页面上的这个PHP代码:
$global_sql3="SELECT name, field, value FROM global_settings";
$global_rs3=mysql_query($global_sql3,$conn) or die(mysql_error());
while($global_result3=mysql_fetch_assoc($global_rs3))
{
if($_POST[$global_result3["field"]] != $global_result3["value"])
{
$sql="UPDATE global_settings set value = '".$_POST[$global_result3["field"]]."' where field = '".$global_result3["field"]."' ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
echo '<h3><font color="#FF0000">'.$global_result3["name"].'</font> Successfully Updated to <font color="#FF0000">'.$_POST[$global_result3["field"]].'</font></h3>';
}
}
我希望能够更新不止一个字段-上面的代码只适用于数据库中的value列,但我希望能够更新5列
我该怎么做?
P.S:我不担心SQL注入,因为这段代码是不公开的
最佳答案
您需要的是使用逗号分隔的字段名设置列:
UPDATE `tableName` SET `field1` = 'value', `field2` = 'value', `field3` = 'value' WHERE `field` = 'fieldname';
如果要在一个查询中用不同的值更新多行,则需要使用case语句。谷歌的快速搜索返回了一个非常直接的教程here
UPDATE mytable
SET field1 = CASE mainField
WHEN mainFieldName1 THEN 'value'
WHEN mainFieldName2 THEN 'value'
WHEN mainFieldName3 THEN 'value'
END,
field2 = CASE mainField
WHEN mainFieldName1 THEN 'New Title 1'
WHEN mainFieldName2 THEN 'New Title 2'
WHEN mainFieldName3 THEN 'New Title 3'
END
WHERE mainField IN (mainFieldName1,mainFieldName2,mainFieldName3)
关于php - 一次更新多个MySQL行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19684426/