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

时间:2017-03-30 05:32:46

标签: php mysql session

实际上我试图根据当前会话显示数据库中2个表的数据,基本上,我已经阅读了很多关于如何解决这个问题的文章和论坛,但我仍然面对它们。所以这些是我已经做过的数据和代码:

<?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();
}
?>      

所以在这里,我收到了这个错误: &#34;错误:您的SQL语法出错;检查与您的MariaDB服务器版本相对应的手册,以便在&#39; WHERE users.id =&#39; 16&#39;&#39;&#39;在第3行&#34;。所以如果我只使用这个查询:

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

它将显示我数据库中的所有数据,但我只需要当前会​​话中的数据。

这是我的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');
}
?>

这是我的表格细节: table users table details

希望有人能帮助我,我的sql和php新手。 TQ

3 个答案:

答案 0 :(得分:7)

更改您的查询。

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

答案 1 :(得分:0)

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

var a  = element.all(by.xpath("//div[contains(text(), 'test_protractor')]")).get(1).getText().then(function(msg){
  console.log(msg)
  expect(msg).toEqual("test_protractor")
})

答案 2 :(得分:-1)

您可以忽略INNER JOIN并按以下步骤使用程序步骤:

  • 第1步:只需在您所有页面中启动Session- session_start();
  • 第2步:在Db中为会话创建一列,例如sessionCheck
  • 第3步:在“注册”页面上启动会话并使用MySqli最后插入 功能类似:

$_session["anything"] = mysqli_insert_id(your db connection variable); 然后将该会话ID存储到变量中(例如-$sessionCheck = $_session["anything"];,然后在执行插入操作时将此变量的值插入到会话列中数据库的所有列中。让会话列为int和unique。

  • 第4步:在“显示页面”上,使用专门嵌套的控件结构 IF代替INNER JOIN。
  • 第5步:您所有的插入操作都将$ _sessionCheck的值插入 session签入除注册页面外的所有表格(因为 会话ID最初是从注册页面中选择的,因此您不需要 再次插入以进行注册)
  • 第6步:您所有的“选择”应绑定到WHERE sessionCheck = $sessionCheck

这对我的过程PHP 7(MySqli)和MySQL 5来说非常合适