更新同一行中的数据数组

时间:2017-12-08 02:21:03

标签: php arrays mysqli

我想根据日期批准休假申请,例如如下:

enter image description here

echo "<select name='app_status[]' required>
<option value='' selected>Pending</option>
<option value='1'>Approve</option>
<option value='2'>Reject</option></select>";

$app_status = array();
if(is_array($app_status)) {
  foreach($_POST['app_status'] as $key1=>$value1) { 
     $app_status[]=$value1;
  }         
}

for($loop = 0; $loop < count($app_status); $loop++) {
  if($app_status[$loop]=="" || $app_status[$loop]==null)
  $error=1;
}

if(isset($error))
$error=1;
else
$error=0;

if($error==0) {     
  for ($i = 0; $i < count($app_status); $i++) {
     $str = $app_status[$i];
     $sql= "UPDATE leaves_apply SET app_status ='$str' WHERE app_id='$app_id'";
     $query2 = mysqli_query($sql);
  }
}

enter image description here

例如,如果我批准12/8/2017 - 15/8/2017除了2017年4月8日的叶子,我会得到这样的输出 11112 当我检查时数据库,列app_status只会更新2,就好像它只读取最后一个数据而不是前四个数据。如果可能,我希望数据 11112 app_status列中更新 app_id no 1357 。我不确定这是否正确,请帮助我,因为我是新手。谢谢。

1 个答案:

答案 0 :(得分:0)

我认为这种修改应该按照您的意愿行事......

if($error==0) {     

  // Declare the string for the app_status
  $str = "";

  // Loop though the statuses and put together the statuses
  for ($i = 0; $i < count($app_status); $i++) {
     $str .= $app_status[$i];
  }

  // Update the database record
  $sql= "UPDATE leaves_apply SET app_status = '$str' WHERE app_id='$app_id'";
  $query2 = mysqli_query($sql);
}

请记住转义数据库查询以防止SQL注入。