in_array()期望参数2为数组,给定错误为null

时间:2013-05-02 20:50:39

标签: mysql

我有一个表单,显示表格中每个工程师的复选框。如果未提交工程师复选框提交表单,则会从作业中删除它们($ diary_id)。

目前的代码有效但页面会在返回下一页之前简要显示此错误。

in_array()期望参数2为数组,给定错误为空

表单上的代码......

  $sql = "SELECT * FROM users WHERE type = 'engineer' ORDER BY first_name";
  $result = mysql_query($sql) or die(mysql_error());
  while ($row = mysql_fetch_array($result)){ ?>

      <div style="width:70px; float:left">
      <input type="hidden" name="engineer_on_page[]" value="<? echo $row['id'];  ?>"/>
          <input type="checkbox" name="engineer[]" <?
          $eng_id= $row['id'];

              $result2 = mysql_query("SELECT * FROM calls_engineers WHERE call_ce = '$diary_id' AND engineer_ce = '$eng_id'");
              if((mysql_num_rows($result2)) > 0)
              { echo 'checked="checked"';
             ?> value="<? echo $row['id']; ?>" />
          <? echo '   '.$row['first_name']; }
             else {
                 echo "value=".$row['id']." />";
          echo '   '.$row['first_name'];
             } 
              ?>
      </div>

  <? } ?>

删除未经选择的工程师的mysql

foreach($_POST['engineer_on_page'] as $engineer_id) {
            $sql = "SELECT * FROM calls_engineers WHERE call_ce = '$diary_id' AND engineer_ce = '$engineer_id'";
            $result = mysql_query($sql)or die(mysql_error());
                if(!in_array($engineer_id, $_POST['engineer'])){
                    if(mysql_num_rows($result) > 0){
                        $sql = "DELETE FROM calls_engineers WHERE engineer_ce = '$engineer_id' AND call_ce = '$diary_id'";
                        $result = mysql_query($sql)or die(mysql_error());
                    }           
                }

            }

我试图将$ _POST ['engineer']初始化为一个数组($ _POST ['engineer'] = array();)在foreach循环之前停止错误,但它也会停止页面工作,没有错误消息,它不再起作用。

我知道该页面需要更新到mysqli,但我想在此之前解决此问题。

由于

1 个答案:

答案 0 :(得分:2)

如果只选中了1位工程师,则该值可能是字符串,而不是数组。

然后,我会在调用is_array()

之前添加in_array()
if(is_array($_POST['engineer']) && !in_array($engineer_id, $_POST['engineer'])){
    // code          
}

实际上有很多方法可以构建它,但你应该明白这一点。