DEV
DEV

Reputation: 667

PHP/MYSQL - How do i assign data fetched from the database(stored in variables) to a session variable?

I am having a bit of an issue passing array variables that are fetched from the database and stored in variables and passing them into session variables to use all over the site.

Code:

$rid=$_SESSION['SESS_MEMBER_ID'] ;

$recquery = 'SELECT * FROM clinic_receptionist,clinic_table where clinic_receptionist.recep_clinic_id = clinic_table.ID AND recep_id ='.$rid;

$recresult = mysqli_query($conn,$recquery);

if(mysqli_num_rows($recresult)>0)
{
while($row = mysqli_fetch_assoc($recresult))
{
$cid = $row['clinic_id'];
$cname = $row['clinic_name'];
$name = $row['recep_full_name'];
$phone = $row['recep_mobile'];
$email = $row['recep_email'];
$address = $row['recep_address'];
$gender = explode(",",$row['recep_gender']);
$dob = $row['recep_dob'];
$doj = $row['recep_doj'];
}
}
?>

The above code is where the select query is happening. I wanted to know how do I assign $cid and $cname to a $_SESSION variable in different pages. Any help would be much appreciated. Thanks

CODE:

<?php session_start();
include('header.php');

include('menu.php');
include('config.php');

$appquery = 'SELECT * FROM appointment_table,clinic_table where clinic_table.ID = appointment_table.clinic_id';
$appresult = mysqli_query($conn,$appquery);
if(mysqli_num_rows($appresult)>0)
{
while($row = mysqli_fetch_array($appresult))
{
$_SESSION['cid'] = $row['ID'];
$_SESSION['cname'] = $row['clinic_name'];
$ptdate = $row['date'];
$pttime = $row['time'];
$ptname = $row['pt_name'];
$ptphone = $row['pt_ph_num'];
$ptemail = $row['pt_email_id'];

}
}
?>

The above code is the place from where I want to receive the id and clinic name.

Upvotes: 2

Views: 745

Answers (2)

Sanjuktha
Sanjuktha

Reputation: 1085

<?php
    // Start the session
    session_start();

    //Assigning the values to $_SESSION
    $_SESSION['cid'] = $row['clinic_id'];

    $_SESSION['cname'] = $row['clinic_name'];;
    ?>

session_start

Upvotes: 3

Darwin von Corax
Darwin von Corax

Reputation: 5246

You need to call session_start() on each page to initialize the session, of course; after that you can just

$_SESSION['cid'] = $cid;
$_SESSION['cname'] = $cname;

to store those values in $_SESSION.

By the way, someone's going to tell you to use a prepared statement for that query, so it might as well be me.

Perhaps an illustration is in order.

page1.php:

<?php
    session_start();  // find session, or create new one

    include('header.php');
    include('menu.php');
    include('config.php');

    $appquery = 'SELECT * FROM appointment_table,clinic_table where clinic_table.ID = appointment_table.clinic_id';

    $appresult = $conn->query($appquery);
    if(($rowcount = $appresult->num_rows()) > 0)
    {
        // create arrays to pass data
        $cids = array($rowcount);
        $cnames = array($rowcount);
        $i = 0;
        while($row = $appresult->fetch_array())
        {
            // add values to arrays
            $cids[$i] = $row['ID'];
            $cnames[$i] = $row['clinic_name'];
            $i++;
        }
        // add arrays to session
        $_SESSION['cids'] = $cids;
        $_SESSION['cnames'] = $cnames;
    }

page2.php:

<?php
    session_start();  // find session, or create new one

    include('header.php');
    include('menu.php');
    include('config.php');

    // retrieve arrays from session        
    $cnames = $_SESSION['cnames'];
    $cids = $_SESSION['cids'];

    // ... and print them
    $count = count($cids);
    for ($i = 0; $i < $count; $i++)
    {
        echo "cid = " . $cid[$i] . "; cname = " . $cname[$i] . "<br>";
    }

page1.php performs the query and stores cid and cname values in arrays which are then stored in $_SESSION. page2.php retrieves the arrays from $_SESSION and echoes them out. In production, of course, it would be considered more efficient to run the query on the page where it is displayed, and only pass key values between pages.

I've also used object syntax instead of procedural syntax for mysqli, just to show what it looks like. As usual, I leave error handling as an exercise for the reader.

Upvotes: 2

Related Questions