【问题标题】:Filtering MySQL data in PHP to only show data of the current session's user?在 PHP 中过滤 MySQL 数据以仅显示当前会话用户的数据?
【发布时间】:2015-12-07 03:20:26
【问题描述】:

我有以下 PHP 脚本,它选择 MySQL 数据并在表中显示所有不同用户的数据。

我需要将此数据限制为仅限该会话的登录用户的数据。因为只有登录人的单个 ID、姓名和电子邮件,而不是显示所有用户数据的表格。

我假设我需要“SELECT * FROM usertable where (something) = (something)”,我只是不确定从这里去哪里。

任何帮助将不胜感激。

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

$result = mysqli_query($con,"SELECT * FROM usertable");

echo "<table border='1'>
<tr>
<th>ID</th>
<th>Firstname</th>
<th>Lastname</th>
<th>Email</th>
</tr>";

while($row = mysqli_fetch_array($result)) 
{
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['firstname'] . "</td>";
echo "<td>" . $row['lastname'] . "</td>";
echo "<td>" . $row['emailaddress'] . "</td>";
echo "</tr>";
}
echo "</table>";

mysqli_close($con);
?>

【问题讨论】:

  • 您可以使用WHERE"SELECT * FROM usertable WHERE id = '".$_SESSION["id"]."'"
  • 作为新手尽量避免SELECT *尝试使用必填字段名而不是*,这样以后可以节省很多时间,效率更高。
  • @LoganWayne 更易读的版本"SELECT * FROM usertable WHERE id = '{$_SESSION['id']}'"
  • 感谢您的建议。但是,我的桌子似乎空了。有什么想法我可能做错了吗?澄清一下,SESSION 中的“id”是我的会话名称,对吧?这是我建立会话的代码,如果它有助于&lt;?php session_start(); #check to see if session exists if (isset($_SESSION['firstname_dmeisli1'])){ #there is a session $fn = $_SESSION['firstname_dmeisli1']; $displayLoggedIn = 'block'; $displayNotLoggedIn ='none'; } else { #no session $fn = ''; $displayLoggedIn ='none'; $displayNotLoggedIn = 'block'; } ?&gt; 请原谅我的格式

标签: php mysql mysqli


【解决方案1】:

你好!


你是对的,你需要在你的语句中添加一个WHERE 子句。

如果您有人登录并正在寻找该人的姓名登录,首先将 id 存储在变量中,例如 $_SESSION 变量,您的语句看起来像 SELECT * FROM usertable WHERE id = {$_SESSION['id']}

所以首先当用户登录时你需要一个函数来存储它

$_SESSION['id'] = row['id']

或者如果您正在寻找特定的名字/姓氏组合:

"SELECT * FROM usertable WHERE firstname = '{$firstname}' AND lastname = '{$lastname}' 

【讨论】:

  • 感谢您的帮助。你认为你可以更具体地存储用户会话吗?当这是建立我的会话的代码时,我将如何合并该功能? &lt;?php session_start(); if (isset($_SESSION['firstname_dmeisli1'])){ $fn = $_SESSION['firstname_dmeisli1']; $displayLoggedIn = 'block'; $displayNotLoggedIn ='none'; } else { #no session $fn = ''; $displayLoggedIn ='none'; $displayNotLoggedIn = 'block'; } ?&gt; Thanks again, please excuse the formatting
【解决方案2】:

SESSION ID 并不意味着您需要制作类似 $_SESSION['user_id'] 的东西。

请记住,SESSION 就像幽灵,有时它会丢失得无影无踪。尝试使用简单的 cookie 来确认数据库中的会话数据存储。只需对那个cookie做一个限制,这样在几次之后,cookie就会被销毁并更新为完全不同的值。

因为你的问题很简单,...

SELECT * FROM 'tablename' WHERE 'table_field' LIKE 'table_value'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-17
    • 2010-12-31
    • 2020-12-15
    • 2018-01-30
    • 2021-03-08
    • 2015-07-19
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多