0

レコードを保存するコントローラーがあります

私のテーブルには以下のフィールドが含まれています

これはMustです(LOOPで繰り返さなければなりません)。

従業員 ID のテーブルに 1 回だけレコードを挿入したいのですが、それを繰り返してはいけません。ただし、同じ従業員が複数のバッチ ID と複数のコース ID を持つことができます。

同じ従業員に別のレコードを挿入するために再度機能しない従業員 ID として Unique を使用すると。

このプロセスはループ内で繰り返される必要があり、テーブルから最後に挿入された ID を取得し、別のテーブルに学生の数を割り当てる必要があります。Mysqlでプロシージャを作成し、プロシージャを呼び出すと、これはすべて正常に機能します。しかし、Linux サーバーが実行されておらず、MySQL エラーがスローされています。

これが私のクエリです

<code>
  
    $insert_staff_assign = "insert into staff_assign 
    (`main_course_id`, `main_batch_id`, `section`, `semester_course_id`, `emp_mas_staff_id`, `emp_category`) 
    VALUES 
    (:main_course_id, :main_batch_id, :section_id, :semester_course_id, :emp_mas_staff_id, :emp_category) 
    ON DUPLICATE KEY UPDATE 
    main_course_id=:main_course_id, main_batch_id=:main_batch_id, section=:section_id, semester_course_id=:semester_course_id, emp_mas_staff_id=:emp_mas_staff_id, emp_category=:emp_category ";

    insert into staff_assign 
    (`main_course_id`, `main_batch_id`, `section`, `semester_course_id`, `emp_mas_staff_id`, `emp_category`) 
    VALUES 
    (:main_course_id, :main_batch_id, :section_id, :semester_course_id, :emp_mas_staff_id, :emp_category) 
    ON DUPLICATE KEY UPDATE 
    main_course_id=:main_course_id, main_batch_id=:main_batch_id, section=:section_id, semester_course_id=:semester_course_id, emp_mas_staff_id=:emp_mas_staff_id, emp_category=:emp_category 

    insert into staff_assign 
    (`main_course_id`, `main_batch_id`, `section`, `semester_course_id`, `emp_mas_staff_id`, `emp_category`) 
    SELECT * FROM (
        SELECT 
        :main_course_id, :main_batch_id, :section_id, :semester_course_id, :emp_mas_staff_id, :emp_category
    ) AS tmp WHERE NOT IN (
        SELECT emp_mas_staff_id FROM staff_assign WHERE emp_mas_staff_id = $save_emp_mas_staff_id
    ) LIMIT 1
  </code>

この問題を解決するには、クエリを送信してください。

上記は私の質問です。

マイ テーブル フィールド

4

1 に答える 1

0

上記の質問に対する答えを見つけました。

mysql.proc の問題。

私のmysqlでは、mysql.procが壊れていました。これが、上記のクエリを実行しない理由です。

上記の問題を修正するには、Linux で mysql を更新する必要があります。

于 2016-12-27T06:45:57.073 に答える