我遇到阵列困难。 我的数据库中有一个表与多对多的关系,员工可以拥有多种技能,并且技能可以与多名员工相关联。 我正在尝试设置一个表单,用户可以使用复选框来显示员工的技能。
如果从数据库返回值,我目前停留在显示带框的复选框上。 我正在运行一个select语句来获取数据,然后将其保存到一个数组(print_r显示正确的数据)然后我尝试使用in_array来确定是否应该选中复选框,但没有任何反应。 有人能看出我做错了吗?谢谢(下面静态设置为员工11,这有3个结果)
<?php
require_once('db_connect.php');
$array = array();
$qry = "SELECT skill_id FROM skillsets WHERE emp_id = 11";
$stmt = $mysqli->prepare($qry);
$stmt->execute();
$result = $stmt->get_result();
while($row = $result->fetch_array(MYSQLI_NUM))
{
$array[] = $row;
}
?>
<input type="checkbox" name="chk1[]" value="1" <?php if(in_array("1", $array)){echo 'checked="checked"';}?> >skill1
<input type="checkbox" name="chk1[]" value="3" <?php if(in_array("3", $array)){echo 'checked="checked"';}?> >skill2
<input type="checkbox" name="chk1[]" value="5" <?php if(in_array("5", $array)){echo 'checked="checked"';}?> >skill3
<input type="checkbox" name="chk1[]" value="2" <?php if(in_array("2", $array)){echo 'checked="checked"';}?> >skill4
<input type="checkbox" name="chk1[]" value="6" <?php if(in_array("6", $array)){echo 'checked="checked"';}?> >skill5
<input type="checkbox" name="chk1[]" value="4" <?php if(in_array("4", $array)){echo 'checked="checked"';}?> >skill6
答案 0 :(得分:2)
$array[] = $row;
这会将数组$row
保存为$array
的新元素。结构就像这样
Array(
Array(0),
Array(1),
Array(2),
...
)
相反,请将代码更改为以下内容:
while($row = $result->fetch_array(MYSQLI_NUM)) {
$array[] = $row[0];
}
这将为您提供结构
Array(
0,
1,
2,
...
)
并且in_array
应该可以正常工作