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