0

問題

2 つのテーブルtbl_student_coursesを結合するテーブルがstudentありcourses、データが挿入されると、2 つの IDcourse_idとの組み合わせになりstudent_idます。でこの組み合わせが重複しないようにしたいだけですtbl_student_courses

コード

foreach($_POST['sel_course'] as $val) {

$query_std_course = "
  INSERT INTO
    `tbl_student_courses`
  SET
    `course_id` = '".$val."',
    `std_id` = '".$_POST['std']."',
  WHERE NOT EXISTS (
    SELECT * FROM `tbl_student_courses` WHERE course_id=$val AND std_id=$std
  )";

}

ヘルプ

このクエリでSQL構文エラーが発生しました。

どんな体でも私を助けることができますか?

前もって感謝します。

4

2 に答える 2

1

おそらく、内側のクエリ値の引用符が1つ欠落しています。SQLクエリは次のようになります

$sql = "
  INSERT INTO
    `tbl_student_courses`
  SET
    `course_id` = '".$val."',
    `std_id` = '".$_POST['std']."',
  WHERE NOT EXISTS (
    SELECT * FROM `tbl_student_courses` WHERE course_id='".$val."' AND std_id='".$std."'
  )";

注:のような準備されていないステートメントをデータベースに挿入するstd_id = '".$_POST['std']."'ことは、良い方法ではありません。PDO自分で使用またはfilterデータを使用することを検討してください。これは簡単に使用できるためSQL Iinjection、セキュリティ違反の可能性があります。

更新:ON DUPLICATE KEY UPDATEまたはを使用してみてくださいINSERT IGNORE INTO table

実装に関する詳細情報を見つけることができます - http://bogdan.org.ua/2007/10/18/mysql-insert-if-not-exists-syntax.html

そして、提案された実装について読んでください - http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

于 2012-08-08T08:09:31.857 に答える
0

求める SQL 構文は、MERGEステートメント、またはプラットフォーム上の同等のステートメントです。

http://en.wikipedia.org/wiki/Merge_(SQL )

于 2012-08-08T08:02:27.030 に答える