问题
我有一个表tbl_student_courses
加入2个表student
和courses
现在,当插入数据时,它是2个ID course_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
语法错误。
任何人都可以帮助我吗?
提前致谢。
答案 0 :(得分: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
答案 1 :(得分:0)
您寻求的SQL语法是MERGE
语句,或其在您平台上的等效语句