Хорошо, я пытаюсь передать значения из php-формы в несколько таблиц. Мой php-код работает нормально, но такие значения, как patientID
вводятся в « patients
», например: PatientID; 100
PatientID; 100
но одно и то же значение для PatientID
не вставляет одно и то же уникальное значение в другую таблицу, например: таблица « Disease
». Я делаю что-то неправильно?
** пересмотренный вопрос
Я не уверен, что у меня есть отношения между правильно назначенными таблицами. Вот таблицы и отношения между ними.
Patient Attends Accident & Emergency Patient seen_by Nurse Nurse assesses disease of patient {{nurse assigns priority to patient}} Priority linked to patient and nurse {{nurse gives patient waiting time}} Time linked to nurse and patient {{doctor will see patient based on their waiting time and priority}} Doctor linked to both time and priority. Accident & Emergency; (ID(PK), PatientID(FK) Address, City, Postcode, Telephone) Patient (ID(PK), Forename, Surname, Gender, Dateofbirth, Address, Patienthistory, illness, Nurse(ID(PK) Forename, surname) Assesses(ID(PK)NurseID(FK), PatientID(FK)) Disease(ID(PK), illness, symptoms, diagnosis, treatment) {{nurse assesses disease of patient (these tables should all be linked}} Priority (ID, NurseID(FK), PatientID(FK), DoctorID(FK), Priority) Time(ID,NurseID, PatientID, DoctorID, Arrival Time, Expected waiting time, Discharge time) Doctor (ID,Firstname, Surname)
Пересмотренный PHP-код. ID не вставляется в таблицы; например: PatientID не вставляет в таблицу Disease.
<?php $con = mysql_connect("localhost","root","") or die('Could not connect: ' . mysql_error()); mysql_select_db("a&e", $con) or die('Could not select database.'); //get NURSE values from form $nurse_ID = $_POST['nurse_ID']; $nurse_name = $_POST['nurse_name']; $nurse_lastname = $_POST['nurse_lastname']; //get Disease values from form $disease_ID = $_POST['disease_ID']; $symptoms = $_POST['symptoms']; $diagnosis = $_POST['diagnosis']; $treatment = $_POST['treatment']; //get Patient values from form $patient_id = $_POST['patient_id']; $patient_name = $_POST['patient_name']; $patient_lastname = $_POST['patient_lastname']; $gender = $_POST['gender']; $dateOfBirth = $_POST['dateOfBirth']; $monthOfBirth = $_POST['monthOfBirth']; $yearOfBirth = $_POST['yearOfBirth']; $address = $_POST['address']; $history = $_POST['history']; $illness = $_POST['illness']; $priority = $_POST['priority']; $priority_id = $_POST['priority_id']; // Validate $date = $dateOfBirth.'-'.$monthOfBirth.'-'.$yearOfBirth; $sql ="INSERT INTO Nurse(Forename, Surname) VALUES('$nurse_name', '$nurse_lastname')"; mysql_query($sql,$con) or die('Error: ' . mysql_error()); echo "$nurse_ID"; mysql_insert_id(); //get the assigned id for a nurse $sql ="INSERT INTO Disease(Illness, Symptoms, Diagnosis, Treatment, PatientID) VALUES('$illness', '$symptoms', '$diagnosis', '$treatment', '$patient_id')"; mysql_query($sql,$con) or die('Error: ' . mysql_error()); echo "$patient_id"; mysql_insert_id(); //get the assigned id for a patient //use nurse_id and patient_id $sql ="INSERT INTO Priority(NurseID, PatientID, Priority) VALUES('$nurse_ID', '$patient_id', '$priority')"; mysql_query($sql,$con) or die('Error: ' . mysql_error()); echo "$priority_id"; mysql_insert_id(); //get the assigned id for priority echo "$patient_id"; mysql_insert_id(); //get the assigned id for a patient $sql="INSERT INTO Patient(Forename, Surname, Gender, Date_Of_Birth, Address, Patient_History, Illness, Priority) VALUES ('$patient_name', '$patient_lastname', '$gender', '$date', '$address', '$history', '$illness', '$priority')"; mysql_query($sql,$con) or die('Error: ' . mysql_error()); echo "$patient_id"; mysql_insert_id(); //get the assigned id for a patient echo "1 record added"; // close connection mysql_close($con); ?>
INSERT
. См. Пересмотренный код ниже. mysql_select_db
(если вы планируете придерживаться mysql_ *). $priority_id
. Я поместил его в пересмотренный код, предполагая, что вы получите его таким же образом через POST
. die()
. Пересмотренный код ( обновлено ):
Предполагается, что auto_increment
разрешен для столбца id
каждой таблицы.
$con = mysql_connect("localhost","root","") or die('Could not connect: ' . mysql_error()); mysql_select_db("a&e", $con) or or die('Could not select database.'); //get NURSE values from form //We don't need to post an id for a Nurse since mysql will assign it for us //$nurse_id = $_POST['nurse_id']; $nurse_name = $_POST['nurse_name']; $nurse_lastname = $_POST['nurse_lastname']; //get Disease values from form // We don't need to post an id for a Disease since mysql will assign it for us //$disease_id = $_POST['disease_id']; $symptoms = $_POST['symptoms']; $diagnosis = $_POST['diagnosis']; $treatment = $_POST['treatment']; //get Patient values from form //We don't need to post an id for a Patient since mysql will assign it for us //$patient_id = $_POST['patient_id']; $patient_name = $_POST['patient_name']; $patient_lastname = $_POST['patient_lastname']; $gender = $_POST['gender']; $dateOfBirth = $_POST['dateOfBirth']; $monthOfBirth = $_POST['monthOfBirth']; $yearOfBirth = $_POST['yearOfBirth']; $address = $_POST['address']; $history = $_POST['history']; $illness = $_POST['illness']; $priority = $_POST['priority']; //We don't need to post an id for a Priority entity since mysql will assign it for us //missing variable //$priority_id = $_POST['priority_id']; //Sanitize and validate your input here // ...skipped // Validate $date = $dateOfBirth.'-'.$monthOfBirth.'-'.$yearOfBirth; //We don't provide an id for a Nurse since mysql will assign it for us $sql ="INSERT INTO Nurse(Forename, Surname) VALUES('$nurse_name', '$nurse_lastname')"; mysql_query($sql,$con) or die('Error: ' . mysql_error()); $nurse_id = mysql_insert_id(); //get the assigned id for a nurse //We don't provide an id for a Patient since mysql will assign it for us $sql="INSERT INTO Patient(Forename, Surname, Gender, Date_Of_Birth, Address, Patient_History, Illness, Priority) VALUES('$patient_name', '$patient_lastname', '$gender', '$date', '$address', '$history', '$illness', '$priority')"; mysql_query($sql,$con) or die('Error: ' . mysql_error()); $patient_id = mysql_insert_id(); //get the assigned id for a patient //We don't provide an id for a Disease since mysql will assign it for us $sql ="INSERT INTO Disease(Illness, Symptoms, Diagnosis, Treatment, PatientID) VALUES('$illness', '$symptoms', '$diagnosis', '$treatment', '$patient_id')"; mysql_query($sql,$con) or die('Error: ' . mysql_error()); //We don't provide an id for a Priority since mysql will assign it for us //But we use $nurse_id and $patient_id that we get earlier $sql ="INSERT INTO Priority(NurseID, PatientID, Priority) VALUES('$nurse_id', '$patient_id', '$priority')"; mysql_query($sql,$con) or die('Error: ' . mysql_error()); echo "1 record added"; // close connection mysql_close($con);
Хотя я не совсем понимаю, как ваша система должна работать, вы можете увидеть в следующем коде, что она никогда не будет вставлять разные идентификаторы для идентификатора болезни и идентификатора пациента:
$sql ="INSERT INTO Disease(ID, Illness, Symptoms, Diagnosis, Treatment, PatientID) VALUES('$id', '$illness', '$symptoms', '$diagnosis', '$treatment', '$id')";
В основном вы вставляете идентификатор болезни, который точно совпадает с идентификатором пациента. Вероятно, вы хотите иметь для них разные переменные.
Что касается моего комментария выше:
Вы можете фильтровать вот так:
$id = intval($_POST['ID']); $name = filter_input(INPUT_GET | INPUT_POST, $_POST['name']); // works in PHP 5.2.x and above
Что касается MySQL, см. Этот пост: Почему я не должен использовать функции mysql_ * в PHP?