Php 当用户未选择选项时,$\u POST[';status';][$index]为空

Php 当用户未选择选项时,$\u POST[';status';][$index]为空,php,html,sql,Php,Html,Sql,我有一个可用性跟踪器,它有许多行代表用户,每行有选择/选项框(确切地说是7个)。这给了我一个7*num\u用户选择框的可能性 我的UI如下所示: Monday Tuesday Wednesday Thursday ------------------------------------------ |Name 'status' 'status' 'status' 'status'| ------------------------------------------ |Name

我有一个可用性跟踪器,它有许多行代表用户,每行有选择/选项框(确切地说是7个)。这给了我一个7*num\u用户选择框的可能性

我的UI如下所示:

       Monday  Tuesday  Wednesday Thursday
------------------------------------------
|Name 'status' 'status' 'status' 'status'|
------------------------------------------
|Name 'status' 'status' 'status' 'status'|
------------------------------------------
|Name 'status' 'status' 'status' 'status'|
------------------------------------------
其中每个名称都是一个标签,“状态”是一个选择选项框

<table>
   <tr>
     <th>
     </th>
     <th>
       Monday
       <br/> 
       Jul 03, 2017
     </th>
     <th>
       Tuesday 
       <br/> 
       Jul 04, 2017
     </th>
   </tr>
   <tr>
     <td>
       Name
    </td>
     <td>
       <select name=status[] style = "color: ; background-color: ""onChange="setColor(this)" >
         <option disabled selected value> -- select an option -- </option>
         <option value='Available' style = "color: #000000; background-color: #b6d7a8">Available</option>
         <option value='Unavailable' style = "color: #ffffff; background-color: #000000">Unavailable</option>
       </select>
     </td>
     <td>
      <select name=status[] style = "color: ; background-color: " onChange="setColor(this)" >
        <option value='Available' style = "color: #000000; background-color: #b6d7a8">Available</option>
        <option value='Unavailable' style = "color: #ffffff; background-color: #000000">Unavailable</option>
      </select>
    </td>
  </tr>
</table>

星期一

2017年7月3日 星期二
2017年7月4日 名称
首先为每个框的状态指定一个固定索引,例如:

<select name="status[3]" ...>

现在像前面一样循环,但检查该索引是否存在:

for ($day = 0; $day < 7; $day++) {
  if (!isset($_POST['status'][$index])) {
    // value was not selected, maybe use a default
  } else {
    $status = $_POST['status'][$index];
  }

  // ...
}
($day=0;$day<7;$day++)的
{
如果(!isset($_POST['status'][$index])){
//未选择值,可能使用默认值
}否则{
$status=$_POST['status'][$index];
}
// ...
}

如果您想为status传递一个默认值(例如“status”)并避免sql注入,那么请使用准备好的语句(以避免sql注入),并在PHP中尝试以下操作:

$status = empty($_POST['status'][$index])?"status":$_POST['status'][$index];

您有此标记的html,但表单代码的questionupdate问题中没有html。稍微离题一点,您的代码片段可能是演示SQL注入的一个非常好的示例。这不是您当前的问题,但是,代码固有的另一个问题。在您的表单中,飞行员id、日期和飞行员的特定状态之间没有关联。这本身就是有缺陷的。每个单元格/select应该标识一个特定的试点/日组合。@gview,我在动态构建表单时考虑过这样做。因此,我应该使用id和日期构建一个标识符,分配给每个选择框,然后在我进行更新时通过$_POST['3_2017-06-26']检索该标识符?
$status = empty($_POST['status'][$index])?"status":$_POST['status'][$index];