Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP和MySQL仅显示当前用户的详细信息_Php_Mysql_Sql_Phpmyadmin - Fatal编程技术网

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

使用PHP和MySQL仅显示当前用户的详细信息,php,mysql,sql,phpmyadmin,Php,Mysql,Sql,Phpmyadmin,在代码的这一部分中,score表和profile页面都显示了我想要的所有内容,但是它显示了EVERYBODIES的详细信息,如 名字 姓 电子邮件 类别 用户名 但是,我希望这样,当用户登录时,他们只能看到自己的详细信息 这是score.php <?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require("db_conn

在代码的这一部分中,score表和profile页面都显示了我想要的所有内容,但是它显示了EVERYBODIES的详细信息,如

名字 姓 电子邮件 类别 用户名 但是,我希望这样,当用户登录时,他们只能看到自己的详细信息

这是score.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);
?>
这是profile.php

<?php
include_once 'db_connect.php';
?>


<!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">

    <title>Profile page </title>

 <?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 `FirstName`,`Surname`,`Email`,`Username`,`Date_Creation`FROM Users ");



while($row = mysqli_fetch_array($result))
{



        echo "<br />Your <b><i>Profile</i></b> is as follows:<br />";
        echo "<b>First name:</b> ". $row['FirstName'];
        echo "<br /><b>Last name:</b> ".$row['Surname'];
        echo "<br /><b>Email:</b> ".$row['Email'];
        echo "<br /><b>Year:</b> ".$row['Username'];
        echo "<br /><b>Date created :</b> ".$row['Date_Creation'];
}


mysqli_close($con);
?>
    </main>



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

在score.php文件中,在这一行:

$result = mysqli_query($con,"SELECT * FROM Score where 'Username' LIKE _['Username']");
$result = mysqli_query($con,"SELECT `FirstName`,`Surname`,`Email`,`Username`,`Date_Creation`FROM Users ");
看看你的WHERE语句,似乎是错的

在您的profile.php中,在这一行:

$result = mysqli_query($con,"SELECT * FROM Score where 'Username' LIKE _['Username']");
$result = mysqli_query($con,"SELECT `FirstName`,`Surname`,`Email`,`Username`,`Date_Creation`FROM Users ");

你不能传递任何WHERE语句。因此,问题出在您的SQL中,特别是在您的位置上。

SQL中的单引号用于指代特定字符串,如“Bob”。如果您试图检查列的值,请不要将列名作为“Username”放在引号中。相反,在列名中不加引号:where Username like

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

您需要一个登录机制。通过会话,您可以在服务器端记住当前登录的用户。然后,您只能从该用户加载数据。这里有一个非常基本的例子:我已经有了一个登录页面,用户在其中登录,还有一个主页?您需要在登录时在会话中保存用户名。例如,使用$\u会话['user']=$username\u表单。不要忘记在脚本开始时启动的会话。然后,您可以检查profile.php中的$_SESSION['user']变量,以获取当前登录的用户名。我刚刚完成了此操作,没有任何更改…您对SQL注入持开放态度-这应该是为了确保站点安全:目的是使用与profile中分数相同的select和where查询。我试图找出在哪里,因为它似乎ok$query=SELECT*FROM Username='Username'的用户$结果=mysqli\u query$con、$query或diemsql错误:。mysqli_错误$con\查询:$query;;而$row=mysqli\u fetch\u assoc$query{这是我所做的更改,我现在收到的错误警告:mysqli_fetch_assoc希望参数1是mysqli_result,第91行给出的字符串您有登录系统吗?您的WHERE,在上面的评论中,您的WHERE条件只会给您带来具有用户名的用户,对吗?@IpFranz我有登录系统em..我希望我的WHERE条件是它查看当前登录的用户并打印他们的信息?好的,那么你必须将来自用户表单的凭证电子邮件传递到你的WHERE,注意SQL注入问题。我做了此更改,它显示警告:mysqli_fetch_数组期望参数1为mysqli_result,boo在第92行的/home/students/aatio001/public_html/FYP/Website/quick/profile.php中给出这是在while$row=mysqli_fetch_数组$result line$query=SELECT*中,其中Username='Username';$result=mysqli_query$con,$query或diemsql错误:.mysqli_error$con.\nQuery:$query:$query;$row=mysqli_fetch\u assoc$query{这是我所做的更改,我现在收到的错误警告:mysqli_fetch_assoc期望参数1是mysqli_result,第91行给出的字符串