使用PHP和MySQL仅显示当前用户的详细信息

时间:2018-05-18 16:53:56

标签: php mysql sql phpmyadmin

在这段代码中,得分表和个人资料页面都会显示我想要的所有内容,但是它显示的是每个人的详细信息,如

名字 姓 电子邮件 类别 用户名 但是,我想要它,以便当用户登录时,他们只能看到他们自己的详细信息

这是score.php

<!-- templates/homepage.twig -->
<h1>{{ pageTitle }}</h1>

<div class="row">
    {% for product in products %}
        <div class="span4">
            <h2>{{ product }}</h2>
        </div>
    {% endfor %}
</div> 

这是profile.php

    <?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
require("db_connect.php");
session_start();
?>

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="../../../../favicon.ico">

<?php
$con=mysqli_connect("localhost","username","Password","Database");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}


$result = mysqli_query($con,"SELECT * FROM Score where 'Username' LIKE _['Username']");


echo "<table border='1'>
<tr>
<th>ID</th>
<th>Username</th>
<th>Score</th>
<th>Gamedate</th>
<th>QuizTitle</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['ID'] . "</td>";
echo "<td>" . $row['Username'] . "</td>";
echo "<td>" . $row['Score'] . "</td>";
echo "<td>" . $row['Gamedate'] . "</td>";
echo "<td>" . $row['QuizTitle'] . "</td>";
echo "</tr>";
}
echo "</table>";

mysqli_close($con);
?>

这些是我尝试运行页面时收到的错误。在我更改选择查询之前,它选择了当前登录的用户,但它显示了每个人的信息

This is for the score This is for the profile

3 个答案:

答案 0 :(得分:0)

score.php文件中,在此行:

$result = mysqli_query($con,"SELECT * FROM Score where 'Username' LIKE _['Username']");

看看你的WHERE语句,似乎是错误的。

profile.php,在这一行:

$result = mysqli_query($con,"SELECT `FirstName`,`Surname`,`Email`,`Username`,`Date_Creation`FROM Users ");

你没有传递任何WHERE语句。所以,问题出在你的SQL中,特别是你的问题。

答案 1 :(得分:0)

SQL中的单引号用于引用特定字符串,如'Bob'。如果您尝试检查列的值,请不要将列名称放在引号中'Username'。而是将列名称不带引号:where Username like

答案 2 :(得分:0)

关于错误。您可以使用错误处理来显示查询中的问题。其次,您可以使用该ID获取登录用户的数据信息。您可以通过会话保存用户的ID,当用户登录时保存ID,然后将其用于where子句。