选择基于$ _POST操作的查询以显示while循环

时间:2017-12-10 03:24:39

标签: php mysqli

这里有一个星期的最后一个问题!我需要休息一下这些东西。我正在尝试运行查询以提取要在while循环中使用的用户数据。第一个查询是默认查询,无论$ _POST如何,它都会运行(或者假设运行)。第二个查询仅在提交ViewAllFriends按钮时运行。这是我的形式:

<form action="" method="POST">
                <div class="panel panel-default friends">
                    <div class="panel-heading">
                            <h3 class="panel-title"><?php echo "<h4 style='font-family:Maven Pro;'>Friends of: <a href='" . $username ."'>" . $profile_user_obj->getFirstAndLastName() . "</a></h4><hr>"; ?></h3>

        <?php 
                global $con;
                $username = $_GET['profile_username'];

                //Default query limits results to 5
                $query = mysqli_query($con,"SELECT * FROM users WHERE friend_array LIKE '$username,%' OR friend_array LIKE '%,$username,%' OR friend_array LIKE '%,$username' LIMIT 0,5");  

                //Query to run if button ViewAllFriends submitted
                if(isset($_POST['ViewAllFriends'])) {
                    $query = mysqli_query($con,"SELECT * FROM users WHERE friend_array LIKE '$username,%' OR friend_array LIKE '%,$username,%' OR friend_array LIKE '%,$username'");            

        ?>
                        <div>
                          <div class="panel-body">
                            <ul>
                <?php
                    while ($row = mysqli_fetch_array($query)) {
                    $friends = $row['profile_pic']; 
                    $friend_username = $row['username'];
                ?>
                              <li><a class="thumbnail pull-left" href="<?php echo $friend_username; ?>"><img src="<?php echo $friends; ?>" title="<?php echo $friend_username; ?>"></a></li><?php } } ?>
                            </ul>
                            <div class="clearfix"></div>
                            <input class="btn btn-default" type="submit" id="ViewAllFriends" name="ViewAllFriends" value="View All Friends">
                          </div>
                        </div>     
                    </div><!-- End Panel Heading -->
                </div><!-- End Panel Friends -->
            </form>

现在第一个查询没有运行,IOW没有显示配置文件图片。但是,当我提交“查看所有朋友”按钮时,将显示所有配置文件图片。我不确定如何评估第一个查询作为默认运行?我尝试了以下方法:

if(empty($_POST[ViewAllFriends])){...}

但这会使第二个查询成为一个不正确逻辑的else语句,因为它依赖于用户操作。

对此的任何帮助都将非常感激。三江源!

1 个答案:

答案 0 :(得分:0)

global $con;
$username = $_GET['profile_username'];

if(isset($_POST['ViewAllFriends'])) {
    //Query to run if button ViewAllFriends submitted
    $query = mysqli_query($con,"SELECT * FROM users WHERE friend_array LIKE '$username,%' OR friend_array LIKE '%,$username,%' OR friend_array LIKE '%,$username'"); 
} else {
    //Default query limits results to 5
    $query = mysqli_query($con,"SELECT * FROM users WHERE friend_array LIKE '$username,%' OR friend_array LIKE '%,$username,%' OR friend_array LIKE '%,$username' LIMIT 0,5"); 
}

现在删除额外的括号:

<?php } } ?>

要:

<?php } ?>

缩略图之后。

如果可行,请考虑更改代码以使用预准备语句,而不是在sql查询中编写变量值以防止SQL注入攻击。