как вставить данные в таблицу oracle, используя php - PullRequest
0 голосов
/ 09 июля 2020

Мне нужна помощь, чтобы вставить значение в oracle с PHP с помощью метода отправки. Не только это, мне также нужна помощь, чтобы вставить значения в oracle из других таблиц. Я написал код, но возникли ошибки, такие как

«Неопределенный индекс: PET_NAME», «oci_execute (): ORA-00911: недопустимый символ», oci_fetch_array (): ORA-24374: определение не выполнено ранее выборка или выполнение и выборка.

Здесь я прикрепил весь свой код и ERD в ссылку. Пожалуйста, помогите мне. Спасибо. Я хочу вставить данные в таблицу обработки из формы HTML с помощью метода публикации и из других таблиц, таких как pet_id.

https://drive.google.com/drive/folders/1Cad2fiTwJRobBPxZf2rmopeENLjcPqIP?usp=sharing

1 Ответ

0 голосов
/ 09 июля 2020

Таблица обработки

Treatement (treat_id,
            staff_id,
            pet_id,
            treat_date,
            total_price) 

Ваш оператор вставки:

 insert into TREATMENT(TREAT_ID.nextval,  --you should use sequence next val in values
                        PET_ID,
                        ;TREAT_DATE, ---why you have a semi colon here???
                       TREAT_TIME,   --- this column does not exist in Treatment table
                        TOTAL_PRICE)'. 'values
                       (:TREAT_DATE_bv,
                        (select p.pet_id,p.pet_name from treatment t join pet p on t.PET_ID =p.pet_id where p.pet_name=:PET_NAME),-- you didn't use place holder for pet_name and why do you need p.pet_name here???
                        :TREAT_TIME_bv,
                        :TOTAL_PRICE_bv)

Названия столбцов вышеупомянутого оператора вставки не соответствуют значениям.

Вам нужен заполнитель для имени сотрудника чтобы получить Staff_id, и ваш оператор вставки должен выглядеть так:

INSERT INTO TREATMENT(treat_id,
                staff_id,
                pet_id,
                treat_date,
                total_price)
values 
          (treat_id.nextval,
          (select staff_id from staff where staff_name=:STAFF_NAME_bv),
          (select pet_id from pet where pet_name=:PET_NAME_bv),
           :TREAT_DATE_bv,
           :TOTAL_PRICE_bv)

Имейте в виду, что выше стандартно sql отрегулируйте в соответствии с вашим кодом php. И еще одно примечание, что произойдет, если 2 или 3 доли pet_id такое же pet_name? Лучше иметь заполнитель cust_id, чтобы получить pet_id ie select pet_id from pet where pet_name=:PET_NAME_bv and cust_id=:CUST_ID_bv

...