Intereting Posts
Стандартный способ переключения из / в user_timezone и gmt Значение переменной Javascript \ textarea для переменной PHP должен LOCK_EX для чтения и записи быть атомарным? PHP file_exists или is_file не отвечает правильно в течение 10-20 с на NFS-файлах (EC2) Регулярное выражение для соответствия IP-адресам Как задать javascript для ожидания значения mysql для переменной php? php PDO вставляет несколько строк в несколько строк с заполнителями Экспертные мнения по очень большому количеству столбцов в таблице mySQL? Получение данных из раскрывающегося списка с множественным выбором с PHP для вставки в MySQL Как программно применять купон в Woocommerce? PHP Скрыть идентификатор от показа в URL-адресе href Как вернуть как целочисленный параметр, так и шаблон рендеринга в качестве ответа в Symfony2 Начало помощи jQuery PHP: array_merge () в альтернативном порядке (почтовый заказ)? Как вы создаете RSS-канал?

Вставка значения в несколько таблиц

Хорошо, я пытаюсь передать значения из 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); ?> 

  1. вам нужно использовать уникальные идентификаторы, имена и фамилии для разных объектов (медсестра, пациент, болезнь и т. д.). И затем используйте их соответственно в INSERT . См. Пересмотренный код ниже.
  2. выберите свой db только один раз в начале скрипта с помощью mysql_select_db (если вы планируете придерживаться mysql_ *).
  3. Устанавливайте и проверяйте ввод от пользователя перед его вставкой.
  4. Вставьте свои записи в правильном (логическом) порядке (медсестра, пациент, болезнь, приоритет).
  5. Теперь все ваши идентификаторы приходят через POST. Вы можете рассмотреть возможность использования id-автогенерации в mysql.
  6. У вас отсутствует переменная $priority_id . Я поместил его в пересмотренный код, предполагая, что вы получите его таким же образом через POST .
  7. Делайте правильную обработку ошибок не только die() .
  8. Лучше подумайте о переходе на PDO или mysqli_ * и использовать подготовленные инструкции.

Пересмотренный код ( обновлено ):

Предполагается, что 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?