提问者:小点点

在MySQL/PHP中,选择给定字符串是特定列子字符串的所有条目


我想查询我的SQL数据库以获得一个名称。 假设某个表包含列“names”,并有两个输入“john silva”和“dave silva”。 我想做一个查询,在该查询中,我获得所有名称为“silva”的输入,并以一种稍后可以将结果回显到HTML代码中的方式存储它们。 以下是我目前得到的结果(请记住,它不起作用,这就是我来这里问的原因:)):

    $query = "SELECT ID, email, fullname, permission FROM users WHERE name LIKE '$data'";
$result = mysqli_query($conn, $query);

        if(mysqli_num_rows($result) > 0){

                while($row = mysqli_fetch_assoc($result)){

                    $userName = $row['fullname'];
                    $userHashedPermission = $row['permission'];
                    $ID = $row['ID'];
                    $userEmail = $row['email'];
                }

                if(password_verify('sim', $userHashedPermission)){
                    $userPermission='sim';
                }else{
                    $userPermission='nao';
                }

                $callbackObj->name = $userName;
                $callbackObj->permission = $userPermission;
                $callbackObj->Id = $ID;
                $callbackObj->email = $userEmail;

                $callbackJson = json_encode($callbackObj);
                echo $callbackJson;
                
        }else{
echo "something went wrong"
}

共3个答案

匿名用户

您想要的功能是类似。 更重要的是:学会使用参数。

$query = "SELECT ID, email, fullname, permission FROM users WHERE name LIKE CONCAT('%', ?)";
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, "s", $data)
$result = mysqli_stmt_execute($conn, $query);

匿名用户

我认为您的示例代码和介绍完全解释了不同的东西。

从你的介绍中,我认为你是在试图以相同的姓氏获得所有的搜索结果,然后以另一种不同的方式保存它们。

如果那是你的观点,我们会有更好的办法来解决。

匿名用户

您需要在查询中做一些更改

$query = "SELECT ID, email, fullname, permission FROM users WHERE name LIKE '%".$data."%'";

根据评论

不要使用同时循环将代码保留为

 if(mysqli_num_rows($result) > 0){                  
    $row = mysqli_fetch_assoc($result));                                
    $callbackJson = json_encode($row);              
    echo $callbackJson;             
 }