-1

I am testing a MySQL query and it is working in MySQL workbench:-

SELECT patient.patient_id,
patient.patient_name_en,
patient.nationality,
visit.visit_id,
visit.date_of_visit,
visit.visit_reason,
visit.consultation_type,
visit.patient_weight,
visit.patient_height,
visit.visit_status,
visit.clinic_id,
doctor_list.doctor_name,
nurse_list.nurse_name,
consultation.complication_name,
consultation.diagnosis_id,
consultation.consultation_result,
medication.med_name,
consultation_med.given_quantity,
consultation_med.medication_collector
from visit
LEFT JOIN patient ON patient.patient_id = visit.patient_id
LEFT JOIN consultation ON visit.visit_id=consultation.visit_id 
LEFT JOIN nurse_list ON consultation.nurse_list_id = nurse_list.nurse_list_id
LEFT JOIN doctor_list ON consultation.doctor_list_id = doctor_list.doctor_list_id
LEFT JOIN consultation_med ON consultation_med.consultation_id = consultation.consultation_id
LEFT JOIN med_pharmacy ON med_pharmacy.med_pharmacy_id = consultation_med.med_pharmacy_id
LEFT JOIN medication ON medication.med_id=med_pharmacy.med_id
WHERE visit.clinic_id='361' AND visit.visit_id = '188'

enter image description here

But when I added into a PHP file, and add binding variables to it, I am getting an error said:

Notice: Undefined index: patient_id in

Here I added the file at the top of my page:

<?php
  include_once('../php/connection.php');
  include_once('../php/visitProfile.php');
?>

Then the visitProfile.php:-

<?php
error_reporting(E_ALL);
ini_set('display_error', 1);
require_once('../php/connection.php');

$cid = $_SESSION['clinic_id'];
$vid = $_REQUEST['pid'];

$getVisitProfile = "SELECT patient.patient_id,
patient.patient_name_en,
patient.nationality,
visit.visit_id,
visit.date_of_visit,
visit.visit_reason,
visit.consultation_type,
visit.patient_weight,
visit.patient_height,
visit.visit_status,
visit.clinic_id,
doctor_list.doctor_name,
nurse_list.nurse_name,
consultation.complication_name,
consultation.diagnosis_id,
consultation.consultation_result,
medication.med_name,
consultation_med.given_quantity,
consultation_med.medication_collector
FROM visit
LEFT JOIN patient ON patient.patient_id = visit.patient_id
LEFT JOIN consultation ON visit.visit_id=consultation.visit_id 
LEFT JOIN nurse_list ON consultation.nurse_list_id = nurse_list.nurse_list_id
LEFT JOIN doctor_list ON consultation.doctor_list_id = doctor_list.doctor_list_id
LEFT JOIN consultation_med ON consultation_med.consultation_id = consultation.consultation_id
LEFT JOIN med_pharmacy ON med_pharmacy.med_pharmacy_id = consultation_med.med_pharmacy_id
LEFT JOIN medication ON medication.med_id=med_pharmacy.med_id
WHERE visit.clinic_id=:cid AND visit.visit_id = :vid";

$execGetVisitProfile = $conn->prepare($getVisitProfile);
$execGetVisitProfile->bindValue(':cid', $cid);
$execGetVisitProfile->bindValue(':vid', $vid);
$execGetVisitProfile->execute();

$res = $execGetVisitProfile->fetchAll();
?>

And when I try to echo the patient id:

<th >Patient ID</th><td><?php echo $res['patient_id'] ?></td>

I am getting the error on it.

P.S. Please note that the query could return one array of multiple ones, but some information are the same in each array like the patient id.

EDIT

var_dump result:

array (size=1) 0 => array (size=38) 'patient_id' => string '361-9001' (length=8) 0 => string '361-9001' (length=8) 'patient_name_en' => string 'X Y Z' (length=5) 1 => string 'X Y Z' (length=5) 'nationality' => string 'Syrian' (length=6) 2 => string 'Syrian' (length=6) 'visit_id' => string '188' (length=3) 3 => string '188' (length=3) 'date_of_visit' => string '2017-07-20' (length=10) 4 => string '2017-07-20' (length=10) 'visit_reason' => string 'This visit occured for medication collection only' (length=49) 5 => string 'This visit occured for medication collection only' (length=49) 'consultation_type' => string 'MedicationCollection' (length=20) 6 => string 'MedicationCollection' (length=20) 'patient_weight' => string '0' (length=1) 7 => string '0' (length=1) 'patient_height' => string '0' (length=1) 8 => string '0' (length=1) 'visit_status' => string 'Inactive' (length=8) 9 => string 'Inactive' (length=8) 'clinic_id' => string '361' (length=3) 10 => string '361' (length=3) 'doctor_name' => string 'Abbas Nasser' (length=12) 11 => string 'Abbas Nasser' (length=12) 'nurse_name' => null 12 => null 'complication_name' => string 'Regular Medication Collection Visit' (length=35) 13 => string 'Regular Medication Collection Visit' (length=35) 'diagnosis_id' => string '86' (length=2) 14 => string '86' (length=2) 'consultation_result' => string 'medication collection' (length=21) 15 => string 'medication collection' (length=21) 'med_name' => string 'Isosorbide Dinitrate 10mg (Isordil 10mg) Tablets ' (length=49) 16 => string 'Isosorbide Dinitrate 10mg (Isordil 10mg) Tablets ' (length=49) 'given_quantity' => string '0' (length=1) 17 => string '0' (length=1) 'medication_collector' => string 'brother' (length=7) 18 => string 'brother' (length=7)

Alive to die - Anant
  • 70,531
  • 10
  • 51
  • 98
alim1990
  • 4,656
  • 12
  • 67
  • 130

2 Answers2

2

You need to do it like below:-

<?php if(count($res) >1){echo $res[0]['patient_id'];}else{echo $res['patient_id']; } ?>

Note:- this condition will check that array have more than one record or not. if yes then use 0 index, otherwise fetch directly.

Alive to die - Anant
  • 70,531
  • 10
  • 51
  • 98
1

If you want single record then write LIMIT 1 in your query.

and use

$execGetVisitProfile->fetch(); // will return single record
Ravi Hirani
  • 6,511
  • 1
  • 27
  • 42