sunny
sunny

Reputation: 1593

How to get session variable from 2 different tables?

I am new in PHP. I use session first time. I have two tables in db. First table with name pacra_teams with column id and title. Second table is og_users with multiple column but i use team_title as foreign key as store id against team title.

Now i want to create a session and want to display team name from table pacra_teams and user name from table og_users.

I try following code but i failed.

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

call these variables

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

Please help me how i can do this?

One Thing More. if i run seesion.php page it display undefine variable "title" and if i run print code. It display username "root" but i dont have any user name root in my db

Upvotes: 0

Views: 2334

Answers (2)

Jacob Tollette
Jacob Tollette

Reputation: 101

The result will be the same every time without a WHERE clause in your sql statement. It's only going to return the first row it finds. It looks like you're trying to set user information in a session variable so you can call the data throughout your application so here's a possible solution assuming you grab an ID for the user somewhere (IE web form).

This is a simple answer to explain a concept, not a tutorial.

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

It's not perfect, but hopefully it helps explain the concept and helps you complete your task.

Upvotes: 0

wkyip
wkyip

Reputation: 500

You already defined a query but didn't execute it.

// 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

Upvotes: 2

Related Questions