Intereting Posts
WordPress передает значение ajax на определенную страницу с помощью WordPress Laravel – Eloquent возвращает только одно значение Где PHP.ini в Mac OS X Lion? Думал, что это было в / usr / local / php5 / lib Regex для имен со специальными символами (Unicode) Печать содержимого массива на отдельных строках Получить размеры для преобразования изображения в максимальное значение Обертка расширения PHP для C ++ PHP Многопользовательский поиск Как загрузить файл в базу данных mysql на общей платформе хостинга? Как отправить пустой массив из формы HTML Form на PHP Doctrine 2 добавляет новое поле, которое автоматически генерирует значения последовательности Получите ошибку при использовании skyscanner Api из расчета полет в php Использование PHP для заполнения <select> </ select>? Как получить идентификатор сообщения для сообщения, которое я только что сделал через API Facebook Используя PHP или JavaScript Facebook SDK, как я могу заставить пользователя войти на мой сайт?

PHP Как исправить Уведомление: Неопределенная переменная:

код:

Function ShowDataPatient($idURL) { $query =" select * from cmu_list_insurance,cmu_home,cmu_patient where cmu_home.home_id = (select home_id from cmu_patient where patient_hn like '%$idURL%') AND cmu_patient.patient_hn like '%$idURL%' AND cmu_list_insurance.patient_id like (select patient_id from cmu_patient where patient_hn like '%$idURL%') "; $result = pg_query($query) or die('Query failed: ' . pg_last_error()); while ($row = pg_fetch_array($result)) { $hn = $row["patient_hn"]; $pid = $row["patient_id"]; $datereg = $row["patient_date_register"]; $prefix = $row["patient_prefix"]; $fname = $row["patient_fname"]; $lname = $row["patient_lname"]; $age = $row["patient_age"]; $sex = $row["patient_sex"]; } return array($hn,$pid,$datereg,$prefix,$fname,$lname,$age,$sex); } 

Ошибка :

 Notice: Undefined variable: hn in C:\xampp\htdocs\... Notice: Undefined variable: pid in C:\xampp\htdocs\... Notice: Undefined variable: datereg in C:\xampp\htdocs\... Notice: Undefined variable: prefix in C:\xampp\htdocs\... Notice: Undefined variable: fname in C:\xampp\htdocs\... Notice: Undefined variable: lname in C:\xampp\htdocs\... Notice: Undefined variable: age in C:\xampp\htdocs\... Notice: Undefined variable: sex in C:\xampp\htdocs\... 

как это исправить?

Определите переменные в начале функции, поэтому, если нет записей, переменные существуют, и вы не получите ошибку. Проверьте нулевые значения в возвращаемом массиве.

 $hn = null; $pid = null; $datereg = null; $prefix = null; $fname = null; $lname = null; $age = null; $sex =null; 

Объявите их перед циклом while.

 $hn = ""; $pid = ""; $datereg = ""; $prefix = ""; $fname = ""; $lname = ""; $age = ""; $sex = ""; 

Вы получаете уведомление, потому что переменные объявляются и назначаются внутри цикла.

Я бы предположил, что ваш запрос работает не так, как ожидалось, и вы попадаете на обратную линию с неопределенными переменными.

Кроме того, как вы выполняете назначение переменной, вы должны переписывать одну и ту же переменную с каждой итерацией цикла, чтобы вы не возвращали весь набор результатов.

Наконец, кажется странным возвращать набор результатов с числовым ключом вместо ассоциативно-ключевого. Попробуйте назвать только поля, необходимые в SELECT, и сохранить назначения клавиш. Так что-то вроде этого:

 Function ShowDataPatient($idURL){ $query =" select * from cmu_list_insurance,cmu_home,cmu_patient where cmu_home.home_id = (select home_id from cmu_patient where patient_hn like '%$idURL%') AND cmu_patient.patient_hn like '%$idURL%' AND cmu_list_insurance.patient_id like (select patient_id from cmu_patient where patient_hn like '%$idURL%') "; $result = pg_query($query) or die('Query failed: ' . pg_last_error()); $return = array(); while ($row = pg_fetch_array($result)){ $return[] = $row; } return $return; } 

Вы также можете рассмотреть вопрос о том, как улучшить свой запрос, это довольно отвратительно, как сейчас.

Вы должны инициализировать переменные за пределами цикла while. Вне цикла while они в настоящее время не имеют области. Вы просто полагаетесь на хорошие оценки php, чтобы значения переносились за пределы цикла

  $hn = ""; $pid = ""; $datereg = ""; $prefix = ""; $fname = ""; $lname = ""; $age = ""; $sex = ""; while (...){} 

альтернативно, похоже, что вы просто ожидаете, что одна строка вернется. так что вы могли бы просто сказать

 $row = pg_fetch_array($result); if(!row) { return array(); } $hn = $row["patient_hn"]; $pid = $row["patient_id"]; $datereg = $row["patient_date_register"]; $prefix = $row["patient_prefix"]; $fname = $row["patient_fname"]; $lname = $row["patient_lname"]; $age = $row["patient_age"]; $sex = $row["patient_sex"]; return array($hn,$pid,$datereg,$prefix,$fname,$lname,$age,$sex) ; 

Похоже, что у вас нет записей, соответствующих вашему запросу, поэтому вам нужно вернуть пустой массив (или нуль или что-то еще), если число строк == 0.

xamp Я предполагаю, что вы используете mysql.

 mysql_fetch_array($result); 

И убедитесь, что $ result не пуст.