我正在尝试将复选框用于带有 SELECT 的多个 sql 查询。
我有 3 个表,一张用于组,一张用于用户,另一张用于将用户连接到名为 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。知道为什么这不起作用吗?我错过了什么吗?不知道这是否是最好的方法...... 如果不清楚,请告诉我,我会尽力解释得更好
最佳答案
这一行可能不起作用:
$check = mysqli_real_escape_string($conn, $_POST['checked']);
$_POST['checked']
是一个数组。因此,您必须为数组中的每一项执行上面的行。
关于php - 使用复选框从表中选择多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40225357/