我有一个包含70多列的表格,所以我该怎么做呢:
mysql_query("update `table` set (`column1`, `column2`, `column3`, `column4`, `column5`, ...`column100`) = ('val1', 'val2', 'val3', 'val4', 'val5', ...'val100') where `anycolumn`='anyvalue'");
所以我将内爆$ _POST数组而不是逐个编写它们:
mysql_query(“更新table
设置column1
,column2
,column3
,column4
,column5
,... {{1 }})=(“。implode(',',$ _ POST)。”)其中column100
='anyvalue'“);
答案 0 :(得分:1)
我在php中更正了你的语法错误,但查询无效。
$query = "update table set (column1, column2, column3, column4, column5, ...column100) = ('".implode("','",$_POST)."') where anycolumn='anyvalue'";
echo $query;
使用关联数组尝试此解决方案:
<?php
$_POST= array(0,1,2,3);
$params=array(
'column1'=>$_POST['0'],'column2'=>$_POST['1'],'column3'=>$_POST['3']
);
foreach($params as $key=>$value){
$partQuery[]="$key = $value" ;
}
$query = "update table set( ".implode(' , ',$partQuery)." ) where anycolumn='anyvalue'";
echo $query;
?>
但要注意 sql注入,并尝试使用mysqli
或PDO
而不是mysql_
,这已弃用,将来不再受支持php的版本。
答案 1 :(得分:1)
您可以使用UPDATE命令的备用格式
UPDATE table SET
column1 = 'value1',
column2 = 'value2',
:
column100 = 'value100';
使用此格式,您可以在PHP中构造SQL代码。对于示例: -
$updated_fields = array();
$sql = 'UPDATE table SET ';
foreach ($_POST as $column => $field) {
if (isset($field) && strlen($field)) {
$updated_fields[] = "`".$column."` = '".mysql_real_escape_string($field)."'";
}
}
$sql = implode(", ", $updated_fields)."WHERE somecondition = 'somevalue' ";
一些注释