Php 如何从两个不同的表中获取会话变量?

Php 如何从两个不同的表中获取会话变量?,php,mysql,session,Php,Mysql,Session,我是新来的PHP。我第一次使用会话。我有两张db格式的桌子。第一个表名为pacra_teams,列id和标题为。第二个表是带有多列的og_users,但我使用team_title作为外键作为针对team title的存储id 现在我想创建一个会话,并想显示表pacra\u teams中的团队名称和表中的用户名 我尝试了以下代码,但失败了 <?php // starts session session_start(); $servername = "localhost"; $usern

我是新来的
PHP
。我第一次使用会话。我有两张db格式的桌子。第一个表名为
pacra_teams
,列id和标题为。第二个表是带有多列的
og_users
,但我使用
team_title
作为
外键
作为针对team title的存储id

现在我想创建一个
会话
,并想显示表
pacra\u teams
中的团队名称和表
中的用户名

我尝试了以下代码,但失败了

<?php
 // starts session
 session_start();
 $servername = "localhost";
$username = "root";
$password = "";
$dbname = "pacra1";


$conn = new mysqli($servername, $username, $password, $dbname);
$sql="SELECT *
FROM og_users
LEFT JOIN pacra_teams
ON og_users.id = pacra_teams.id
LIMIT 1
";
 // setting variable values during session

$_SESSION['og_users.username']=$username;
$_SESSION['pacra_teams.title']=$title;
?>

调用这些变量

<?php
session_start();
?>
<?php
print_r($_SESSION);
?>

请帮我怎么做

还有一件事。如果我运行seesion.php页面,它将显示未定义的变量“title”
如果我运行打印代码。它显示用户名“root”,但我的数据库中没有任何用户名root

您已经定义了一个查询,但没有执行它

// starts session
session_start();
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "pacra1";

$conn = new mysqli($servername, $username, $password, $dbname);

$sql="SELECT *
FROM og_users
LEFT JOIN pacra_teams
ON og_users.id = pacra_teams.id
LIMIT 1
";
$result = $conn->query($sql);
$row = $result->fetch_object();
// setting variable values during session

$_SESSION['og_users.username'] = $row->USER_NAME; // Change to correct column name in table og_users
$_SESSION['pacra_teams.title'] = $row->TITLE_COLUMN_NAME; // Change to correct column name in table pacra_teams

如果sql语句中没有WHERE子句,每次的结果都是相同的。它只返回找到的第一行。看起来您正试图在会话变量中设置用户信息,以便可以在整个应用程序中调用数据,因此这里有一个可能的解决方案,假设您在某处为用户获取ID(即web表单)

这是一个解释概念的简单答案,而不是教程。

<?php

//Setup your connection stuff here
  session_start();
  $servername = "localhost";
  $username = "root";
  $password = "";
  $dbname = "pacra1";

//Get a user's name from a form
  $userName = $_POST['username'];

// Perform your query
  $db= new mysqli($servername, $username, $password, $dbname);
  $sql = "SELECT * 
  FROM og_users 
  LEFT JOIN pacra_teams 
  ON og_users.id = pacra_teams.id 
  WHERE og_users.username = {$userName} LIMIT 1";
  if(!$result = $db->query($sql)){
    die('Error [' . $db->error . ']');
  }

// Setting variable values during session
  while($row = $result->fetch_assoc()) {
    $_SESSION['ogUsername'] = $row['USERNAME']; // USERNAME is a placeholder for the example
    $_SESSION['pacraTeamsTitle'] = $row['TITLE']; // Same here
  }

您正在使用$username的值设置会话变量,该值在代码的第5行设置为“root”。未定义变量错误是因为您从未声明$title变量。。。你能再解释一下你想完成什么吗?@jacobtolette我想显示登录用户的用户名和团队名称。我认为这是由我们在会议上完成的。要显示用户名和团队名称,我使用join queryI see。查询只返回数据库中的第一个人,并且每次都返回同一个人,除非插入新记录,因为语句中没有WHERE。这有意义吗?我将在一秒钟内键入一个带有示例的解决方案。wkyip如果我不能在查询中使用LIMIT,请告诉我如何操作。我按用户id打印数据?@sunny如果在查询中不使用限制,您可能需要一个WHILE循环。有关更多信息,请访问