2013-06-04 76 views
0

使用数组时更新多个MySQL行的时候我有一个问题,让我们用下面的提交表单启动.php“页面 - 以下代码如下:PHP数组更新多个MySQL行

if((isset($_POST['n'])) && (isset($_POST['s'])) && (isset($_POST['o']))){ 

//Shows up the ID for each Supplier Name 
if(is_array($_POST['id'])) { 
foreach($_POST['id'] as $id){ 

//Updates Supplier Name 
if(is_array($_POST['n'])) { 
foreach($_POST['n'] as $value){ 
$query = "UPDATE suppliers SET name = '".$value."' where id ='".$id."'"; 
$result = mysql_query($query); 
} 
} 


//Updates Short_Name 
if(is_array($_POST['s'])) { 
foreach($_POST['s'] as $value1){ 
$query = "UPDATE suppliers SET short_name = '".$value1."' where id ='".$id."'"; 
$result = mysql_query($query); 
} 
} 

//Updates Shipment No. 
if(is_array($_POST['o'])) { 
foreach($_POST['o'] as $value2){ 
$query = "UPDATE suppliers SET shipment_no = '".$value2."' where id ='".$id."'"; 
$result = mysql_query($query); 
} 
} 


//End of for Each id 
} 
} 

实际上做什么时,选择单行更新..它完美的工作!但是,当进行多重选择以便为它们进行更新时,它会混淆所有值。如同复制最后一个ID,供应商名称,短名称和装运号码一样。到所有选定的行。

+0

@Voitcus如果缩短代码,则有一个for循环函数。 –

回答

1

我认为这是由于foreach内的foreach($ id)系列。我会写:

foreach($_POST['id'] as $index=>$id) { 

,让您记录的索引的轨迹,然后不做任何其他的foreach而是:

$query = "UPDATE suppliers SET name = '".$_POST['n'][$index]."' where id ='".$id."'"; 

使你保持价值和$ ID之间的联系其他变量。