获取警告:当我将利息字段留空时,为foreach()提供的参数无效


Getting Warning: Invalid argument supplied for foreach() when i leave interest filed empty?

当我注册新用户时,我的页面中有一个兴趣区域,当将兴趣区域选择字段保留为默认值(空)时,我会收到此错误这是代码:

    91-    //Interest
    92-     foreach ($_POST['interest_id'] as $interest)
    93-     {
    94-         $query = "INSERT INTO user_interest (user_id, interest_id)
    95-                 VALUES  ('$user_id', '$interest')";
    96-         $result = mysqli_query($link,$query);
    95-     }

这是我在页面中的兴趣区域部分:

<label>Research Areas</label>
      <select name="interest_id[]" class="small-input" multiple>
        <?php 
            $query = "SELECT * FROM research_interest ORDER BY name ASC";
            $result = mysqli_query($link, $query);
            while($row = mysqli_fetch_object($result))
            {
        ?>
            <option value="<?php echo $row->id; ?>"><?php echo $row->name; ?></option>
        <?php
            }
        ?>
      </select>
    </p>

这是不言自明的,$_POST['interest_id']是一个字符串值,但foreach需要一个数组。

 $interest = (int) $_POST['interest_id'];
 $query = "INSERT INTO user_interest (user_id, interest_id) 
           VALUES  ('$user_id', '$interest')";
 $result = mysqli_query($link,$query);

或者,如果你正在传递一个数组(你是,直到我发布了以上所有内容之后才读到),你应该首先测试它是否为空:

if(!empty($_POST['interest_id']) && is_array($_POST['interest_id'])) {
foreach ($_POST['interest_id'] as $interest)
{
  $query = "INSERT INTO user_interest (user_id, interest_id)
  VALUES  ('$user_id', '$interest')";
  $result = mysqli_query($link,$query);
} }