繁体   English   中英

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

[英]How to get session variable from 2 different tables?

我是PHP新手。 我第一次使用会话。 我在数据库中有两个表。 第一个名称为pacra_teams表,具有列ID和标题。 第二个表是og_users具有多列,但我使用team_title作为foreign key作为针对团队标题的商店ID。

现在,我想创建一个session并希望从表中显示的队名pacra_teams从和用户名table og_users

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

<?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页面,它将显示未定义的变量“标题”,并且如果我运行打印代码。 它显示用户名“ 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子句时,结果都是相同的。 它只会返回找到的第一行。 似乎您正在尝试在会话变量中设置用户信息,以便可以在整个应用程序中调用数据,因此这是一种可能的解决方案,假设您在某个地方(IE Web表单)获取了该用户的ID。

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

<?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
  }

它不是完美的,但是希望它可以帮助解释概念并帮助您完成任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM