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循环。有关更多信息,请访问