如何基于会话变量php从两个表中获取数据?

如何基于会话变量php从两个表中获取数据?,php,mysql,session,Php,Mysql,Session,事实上,我试图在当前会话的基础上显示数据库中两个表中的数据,基本上,我已经阅读了很多关于如何解决这个问题的文章和论坛,但到目前为止我仍然面临着这些问题。这些是我已经做过的数据和代码: <?php include('db.php'); $sql="SELECT* FROM users INNER JOIN details ON users.id= details.id LIMIT 1 WHERE users.id ='$loggedin_id' " ; $result=mysqli_qu

事实上,我试图在当前会话的基础上显示数据库中两个表中的数据,基本上,我已经阅读了很多关于如何解决这个问题的文章和论坛,但到目前为止我仍然面临着这些问题。这些是我已经做过的数据和代码:

<?php
include('db.php');

$sql="SELECT*
FROM users
INNER JOIN details ON users.id= details.id LIMIT 1 WHERE users.id ='$loggedin_id' " ;

$result=mysqli_query($db,$sql);
if (!$result) {
printf("Error: %s\n", mysqli_error($db));
exit();
}
?>      
它将显示我数据库中的所有数据,但我只需要当前会话中的数据

这是我的session.php文件:

<?php 
include('db.php');
session_start();
$user_check=$_SESSION['sess_username'];
$ses_sql=mysqli_query($db,"select username,id from users where username='$user_check' ");
$row=mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
$loggedin_session=$row['username'];
$loggedin_id=$row['id'];
$role = $_SESSION['sess_userrole'];
if(!isset($loggedin_session) && $role!="user"){
  header('Location: index.php?err=2');
}
?>

我认为您的查询应该如下所示:

$sql = "SELECT * FROM users
INNER JOIN details ON users.id= details.id  WHERE users.id = $loggedin_id ";

我认为您的查询应该如下所示:

$sql = "SELECT * FROM users
INNER JOIN details ON users.id= details.id  WHERE users.id = $loggedin_id ";

这样更改您的查询

$sql="SELECT*
FROM users
INNER JOIN details ON users.id= details.id WHERE users.id ='$loggedin_id' LIMIT 1" ;

这样更改您的查询

$sql="SELECT*
FROM users
INNER JOIN details ON users.id= details.id WHERE users.id ='$loggedin_id' LIMIT 1" ;

您可以忽略内部联接,并使用如下程序步骤:

  • 步骤1:只需在所有页面中启动会话-Session_Start()
  • 步骤2:在数据库中为会话创建列,例如sessionCheck
  • 步骤3:在注册页面上启动会话并使用MySqli last insert 功能如下:
$\u session[“anything”]=mysqli\u insert\u id(您的db连接变量)
然后将此会话Id存储到变量中(如-
$sessionCheck=$\u session[“anything”];
在执行Insert时,将此变量的值插入数据库中会话列上的所有列。让会话列按int和unique排序

  • 步骤4:在显示页面上使用专门嵌套的控件结构 如果不是内部连接
  • 步骤5:所有插入将$\u sessionCheck的值插入 sessionCheck除了注册页面之外的所有表(因为 会话id最初是从注册页面获取的,所以您不需要 再次插入到“注册”中)
  • 步骤6:所有选择都应与
    关联,其中sessionCheck=$sessionCheck

这在我的过程PHP7(MySqli)和MySQL 5上非常适用。您可以忽略内部连接,使用如下过程步骤:

  • 步骤1:只需在所有页面中启动会话-Session_Start()
  • 步骤2:在数据库中为会话创建列,例如sessionCheck
  • 步骤3:在注册页面上启动会话并使用MySqli last insert 功能如下:
$\u session[“anything”]=mysqli\u insert\u id(您的数据库连接变量);
然后将此会话Id存储到变量中(如-
$sessionCheck=$\u session[“anything”];
在执行Insert时,将此变量的值插入数据库中会话列上的所有列。让会话列按int和unique排序

  • 步骤4:在显示页面上使用专门嵌套的控件结构 如果不是内部连接
  • 步骤5:所有插入将$\u sessionCheck的值插入 sessionCheck除了注册页面之外的所有表(因为 会话id最初是从注册页面获取的,所以您不需要 再次插入到“注册”中)
  • 步骤6:所有选择都应与
    关联,其中sessionCheck=$sessionCheck

这在我的过程PHP7(MySqli)上非常适合我和MySQL 5

您的查询格式不正确…我想..限制在何处之前。我想您需要一个子查询。一些MySQL wiz可以帮助您解决问题。警告:当使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了一个严重的错误。切勿将de>$\u POST
$\u将
或任何用户数据直接输入到查询中,如果有人试图利用您的错误,这可能非常有害。@tadman谢谢您的建议。:)您的查询格式不正确…我认为..限制在何处之前。我认为您需要一个子查询。一些mysql wiz可以帮助您解决问题。警告:当使用
mysqli
时,您应该使用and将用户数据添加到查询中。不要使用字符串插值或连接来完成此操作,因为您创建了一个严重的错误。切勿将
$\u POST
$\u将
或任何用户数据直接输入到查询中,如果有人试图利用您的错误,这可能非常有害。@tadman谢谢您的建议。:')对不起,我没有运行我的查询,但这项工作很好,$sql=“SELECT*FROM users internal JOIN details ON users.id=details.id WHERE users.id=$loggedin\u id”;tq。。。我也认为这项工作需要进一步探索抱歉,我没有运行我的查询,但这项工作很好,$sql=“SELECT*FROM users-internal-JOIN-details-ON-users.id=details.id=loggedin\u-id”;tq。。。我认为这项工作也需要进一步探索,并保持下去很好,继续保持下去