img src显示数据库中的错误用户

时间:2017-02-24 21:15:36

标签: php html mysql image

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>

这是我个人资料中显示的内容: img src

在我的search.php页面上,它显示正确。

correct img

这是显示信息的内容:

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,并且配置文件正确显示。

correct img

我主要担心的是我在这两段代码中没有改变任何内容,而且我能够在用户之间进行切换。什么是伏都教?我已经连续几周登录了两个不同的用户并且显示正确。我甚至用精细的梳齿梳理了我当地的历史,没有任何改变。如果有人可以提供帮助,那就太好了,因为我花了很长时间。如果我删除除了我的&#34; csheridan&#34;用户,它的工作原理。如果我删除然后重新创建testUser,我的&#34; csheridan&#34;用户现在显示默认头像。这是一个很大的错误,我迷失了。

2 个答案:

答案 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";

这需要修复