gpt4 book ai didi

mysql - in_array() 期望参数 2 为数组,给出错误为 null

转载 作者:行者123 更新时间:2023-11-29 08:31:51 26 4
gpt4 key购买 nike

我有一个表单,为表中的每个工程师显示一个复选框。提交表单后,如果工程师的复选框未勾选,他们将从工作中删除 ($diary_id)。

目前的代码可以工作,但页面会在返回下一页之前短暂显示此错误。

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

表单上的代码...

  $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());
}
}

}

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

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

谢谢

最佳答案

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

然后,我会在调用 in_array() 之前添加一个 is_array():

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

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

关于mysql - in_array() 期望参数 2 为数组,给出错误为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16347490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com