0

问题

我有一个tbl_student_courses连接 2 个表的表studentcourses现在插入数据时,它是 2 个 idcourse_idstudent_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

可能您缺少引号一个内部查询值。您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']."'不是一种好方法。考虑自己使用PDOfilter数据,bec。这可以很容易地用于SQL Iinjection因此它是潜在的安全漏洞。

更新:尝试使用ON DUPLICATE KEY UPDATEor 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 回答