UPDATE 我在数组提取期间将此添加到我的while循环中。这有用吗,还是有更好的方法?它现在显示正确的图片:
$query = "SELECT * FROM `users`";
$result = mysqli_query($connection, $query);
if ($result) {
while ($row = mysqli_fetch_assoc($result)) {
if($username == $row['username']) { //<--- NEW CODE
$profile_pic = '<img src="' . $row['avatar'] . '" style = "width:70%" alt="Profile Photo"/>';
}
}
}
我试图搜索这个,但找不到类似的东西。我在profile.php页面上没有编辑任何内容。我创建了几个测试用户来测试实时用户搜索的功能。一切正常,直到我以另一个用户身份登录。浏览器中显示的配置文件pic指向不同的用户,但真实的图像路径正确存储在数据库中。我删除了原来的两个用户以外的所有用户,但没有任何变化。我还没有更改任何代码,但我会显示显示个人资料照片和实时搜索的相关代码。 (注意:我稍后会处理更安全的查询。学习翻译成准备好的语句。)
来自profile.php的pic容器。我甚至会在左上角暂时回显当前的用户名,只是为了表明它获得了正确的名称。
<div id="avatar-container" class="dsh-display-container">
<button type="button" id="upload-toggle"><i class="fa fa-camera"></i><span> Update Avatar </span></button>
<?php
$query = "SELECT * FROM `users`";
$result = mysqli_query($connection, $query);
if ($result) {
while ($row = mysqli_fetch_assoc($result)) {
$profile_pic = '<img src="' . $row['avatar'] . '" style = "width:70%" alt="Profile Photo"/>';
}
}
?>
<?php echo $avatar_form; ?>
<?php echo $profile_pic; ?>
</div>
在我的search.php页面上,它显示正确。
这是显示信息的内容:
try {
$db = new PDO("mysql:host=localhost;dbname=devSocial", "xxxxxxxxx", "xxxxxxxxxxxxx");
} catch(Exception $e) {
die("ERROR: ".$e->getMessage());
}
if (isset($_POST['username']) && $_POST['username'] != "") {
$req = $db->prepare("SELECT * FROM `users` WHERE username LIKE :username");
$req->execute(array(
'username' => '%' . $_POST['username'] . '%'
));
if ($req->rowCount() == 0) {
echo "Sorry. No one by that name found.";
} else {
while ($data = $req->fetch()) {
$data['gender'] = ($data['gender'] == 'm') ? 'male' : 'female';
?>
<div class="user">
<div class="img-container">
<img src="<?php echo $data['avatar']; ?>" class="userImage">
</div>
<span class="username"><?php echo $data['username']; ?></span><br/>
<span class="gender"><?php echo $data['gender'];?></span><br/>
<span class="profession"><?php echo $data['profession']; ?></span><br/>
<span class="uni"><?php echo $data['uni']; ?></span><br/>
<span class="degree"><?php echo $data['degree']; ?></span><br/>
<span class="major"><?php echo $data['major']; ?></span><br/>
<hr/>
</div>
我从数据库中完全删除了testUser,并且配置文件正确显示。
我主要担心的是我在这两段代码中没有改变任何内容,而且我能够在用户之间进行切换。什么是伏都教?我已经连续几周登录了两个不同的用户并且显示正确。我甚至用精细的梳齿梳理了我当地的历史,没有任何改变。如果有人可以提供帮助,那就太好了,因为我花了很长时间。如果我删除除了我的&#34; csheridan&#34;用户,它的工作原理。如果我删除然后重新创建testUser,我的&#34; csheridan&#34;用户现在显示默认头像。这是一个很大的错误,我迷失了。
答案 0 :(得分:0)
用户从未返回发表评论作为答案,所以我会在这里发布。这实际上是评论的组合。
当我运行查询时
$query = "SELECT * FROM `users`";
它从数据库中获取所有用户。在我最初的while循环期间
while($row = mysqli_fetch_assoc($result) {
$profile_pic = '<img src="' . $row['avatar'] . '" style="width:70%" alt="Profile Photo"/>';
它始终返回数据库中的最后一个用户。
这就是修复它的原因。我添加了一个if条件,专门将该行与当前用户名匹配:
$query = "SELECT * FROM `users`";
$result = mysqli_query($connection, $query);
if ($result) {
while ($row = mysqli_fetch_assoc($result)) {
if($username == $row['username']) { //<-- THIS RIGHT HERE
$profile_pic = '<img src="' . $row['avatar'] . '" style = "width:70%" alt="Profile Photo"/>';
}
}
}
echo $avatar_form;
echo $profile_pic;
如果有人搜索此问题,请使用更安全的代码。我正在学习PDO并准备好语句,稍后代码将被替换。
答案 1 :(得分:0)
您的照片查询正在吸引所有用户:
$query = "SELECT * FROM users";
这需要修复