【问题标题】:PHP select from statement when, not workingPHP select from 语句何时不工作
【发布时间】:2018-10-07 03:42:35
【问题描述】:

我对这个 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 注入是开放的,但这个站点只是一个概念证明:)

【问题讨论】:

  • 您每次都通过while 循环覆盖变量。当您执行下一个查询时,$follow$loc 将只包含查询返回的最后一行的值。
  • 除了 SQL injection 问题 (see fix),对于从第一个查询中找到的最后一个 $follow 用户的所有结果,您是指 username = '$follow' 而不是 username LIKE '$follow'
  • 也不需要使用两个查询,只需在一个查询中加入usersposts 表即可。
  • @Tigger 如果值中没有通配符,则LIKE= 相同。
  • Barmar 想告诉你的是添加%$yourvar%

标签: javascript php html mysql sql


【解决方案1】:

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

更深入的了解可以点击这个链接:SQL LIKE Operator

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

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

【讨论】:

  • 我怀疑他想使用用户名作为这样的模式。
  • 但他只是将这个网站用作概念证明。也许这可以帮助他调试。
【解决方案2】:

试试这个,我做了一些调整,所以它可以工作

<?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_array($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_array($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!";
}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多