首页 > 解决方案 > PHP select from 语句何时不工作

问题描述

我对这个 php 代码有真正的疑虑:

 <?php 
        $sessionid = $_SESSION['id'];
        echo $sessionid;

        $sql = "SELECT * FROM users WHERE id = '$sessionid';";
        $rsults = mysqli_query($conn, $sql);
        $resultsCheck = mysqli_num_rows($rsults);
        if ($resultsCheck > 0) {
            while ($row = mysqli_fetch_assoc($rsults)){
                $follow = $row['follow'];
                $loc = $row['places'];
                echo $follow;
                echo $loc;
            }
        }
    $sql = "SELECT * FROM posts WHERE username LIKE '$follow'";
    $rsults = mysqli_query($conn, $sql);
    $resultsCheck = mysqli_num_rows($rsults);
    if ($resultsCheck > 0) {
        while ($row = mysqli_fetch_assoc($rsults)){
            echo '<div class="posts">';
            echo '<img class="img"src='.$row['img'].' width="1500px">';
            echo '</div>';
            echo '<div class="contain">';
            echo '<div class="over">';
            echo '<div class="username2">';
            echo '<img src="focus.png" width="25px" height="25px" style="padding-right: 10px;">'.'<a href="./Profile.php?data='.$row['username'].'">'.$row['username'].'</a>'.'<img src="loc.png" width="25px" height="25px" style="padding-right: 5px; padding-left: 10px;">'.'<a href="./Location.php?data='.$row['ext'].'">'.$row['ext'].'</a>';
            echo '</div>';
            echo '<div class="content">';
            echo $row['content'];
            echo '</div>';         
            echo '</div>';
        }
    }else {
        echo "There are no results matching your search!";
}
?>

它将输出第一个 select 语句中的变量,但第二个语句仅输出“没有与您的搜索匹配的结果!”。我已经在我的管理员 php 中尝试了使用实际单词(不是变量)的语句,它运行良好,但是当它在网站上时......什么都没有。我想这与变量有关,但我真的不知道所以任何帮助将不胜感激!非常感谢(我知道变量对 sql 注入是开放的,但这个站点只是一个概念证明:)

标签: javascriptphphtmlmysqlsql

解决方案


对于您的第二条 SQL 语句,您需要%与 LIKE 运算符一起使用。 %- 百分号代表零个、一个或多个字符

如需更深入的了解,您可以点击此链接:SQL LIKE Operator

更改您的第二个 SQL 语句,如下所示。我认为它会按您的预期工作。

$sql = "SELECT * FROM posts WHERE username LIKE '%$follow%'";

推荐阅读