【发布时间】:2016-10-24 18:45:03
【问题描述】:
我正在尝试通过 SELECT 对多个 sql 查询使用复选框。
我有 3 张表,一张用于 groups 一张用于 users 一张用于将用户连接到名为 groupreluser 的不同组。根据检查的组,我希望它打印出属于这些组的每个用户的电话号码。
复选框是根据表groups
的内容创建的<form method="post">
<?php
$sql = "SELECT * FROM groups WHERE groupname LIKE '%minor%'";
$result = $conn->query($sql);
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
echo '<input type="checkbox" name="checked[]" value="'.$row['group_id'].'">'
. $row['groupname'] . '</br>';
}
}
?>
<input type="submit" name="submit" value="submit">
</form>
使用 sql 查询代码来获取电话号码。
if(isset($_POST['submit'])){
$check = $_POST['checked'];
if(!empty($check)){
foreach($check as $sel){
$sel = mysqli_real_escape_string($conn, $sel);
$sql = "
SELECT
groups.group_id,
groups.groupname,
groupreluser.user_id,
groupreluser.group_id,
users.user_id,
users.name,
users.phone
FROM
groupreluser
JOIN
groups
ON
groups.group_id = groupreluser.group_id
JOIN
users
ON
users.user_id = groupreluser.user_id
WHERE
groups.group_id = '$sel'
";
$res = $conn->query($sql);
if($res->num_rows > 0){
while($row = $res->fetch_assoc()){
echo $row['phone'] . '</br>';
}
}
}
}
}
只要我不使用复选框,而是在 SELECT 语句中手动添加 group_id,它就可以正常工作。知道为什么这不起作用吗?我错过了什么吗?虽然不知道这是否是最好的方法...... 如果不清楚,请告诉我,我会尝试更好地解释它
【问题讨论】:
-
echo '<input type="checkbox" name="checked[]"...在表单标签内吗?如果没有,PHP 应该会向您抛出一个错误,如“未定义索引...”。 -
你能帮我们一个忙并 var_dump 几个版本的 $sql 以便我们看看它有多乱吗?
-
对不起,没有把它放进去。是的,复选框在表单标签内。我现在已将其添加到帖子中
标签: php html mysql sql checkbox