使用复选框从表中选择多行

时间:2016-10-24 18:45:04

标签: php html mysql sql checkbox

我尝试使用复选框对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查询代码获取phonenumbers。

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 ,它就可以正常工作。知道为什么这不起作用吗?我错过了吗?不知道这是否是最好的方式,但... 如果不清楚,请告诉我,我会尝试更好地解释它

2 个答案:

答案 0 :(得分:1)

这条线可能不起作用: $check = mysqli_real_escape_string($conn, $_POST['checked']);

$_POST['checked']是一个数组。所以你已经为数组中的每个项做了上面的行。

答案 1 :(得分:0)

您的$_POST['submit']是数组,因此将其直接传递给mysqli_real_escape_string将无效。但这种方法可以完成这项工作:

if(isset($_POST['submit'])){
$check = $_POST['check'];
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);
  ...........