这里有一个星期的最后一个问题!我需要休息一下这些东西。我正在尝试运行查询以提取要在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语句,因为它依赖于用户操作。
对此的任何帮助都将非常感激。三江源!
答案 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注入攻击。