Php mysql don';不要把复制品贴到桌子上
所以我有一个数据库,里面有一张电影表,里面有他们各自的导演。 我有一个表单,可以将导演添加到电影中,但我不希望添加重复的导演(即,有人将导演添加到电影导演表中已经存在的电影中) 我有以下几点,但就我个人而言,我不明白为什么这仍然会增加重复项:Php mysql don';不要把复制品贴到桌子上,php,mysql,Php,Mysql,所以我有一个数据库,里面有一张电影表,里面有他们各自的导演。 我有一个表单,可以将导演添加到电影中,但我不希望添加重复的导演(即,有人将导演添加到电影导演表中已经存在的电影中) 我有以下几点,但就我个人而言,我不明白为什么这仍然会增加重复项: if (isset($_POST["submit"])) { $movie_id = $_POST[movie]; $director_id = $_POST[director]; echo $movie_id; echo
if (isset($_POST["submit"])) {
$movie_id = $_POST[movie];
$director_id = $_POST[director];
echo $movie_id;
echo '<br/>';
echo $director_id;
echo '<br/>';
$add_sql = "INSERT IGNORE INTO MovieDirector (mid, did)
VALUES ($movie_id, $director_id)";
if (mysql_query($add_sql, $db_connection)){
echo "added director to movie ";
}
else {
echo "Failed ";
}
if(设置($\u POST[“提交”])){
$movie\u id=$\u POST[movie];
$director\u id=$\u POST[director];
echo$movie_id;
回声“
”;
echo$director\u id;
回声“
”;
$add_sql=“将忽略插入MovieDirector(mid,did)
值($movie_id,$director_id)”;
if(mysql\u查询($add\u sql,$db\u connection)){
echo“将导演添加到电影中”;
}
否则{
echo“失败”;
}
我认为您对MySQL中的插入
语句的忽略
修饰符关键字的作用感到困惑。忽略
的作用不是防止重复记录的发生,而是使错误保持沉默
因此,有多种方法可以实现这一点:
IGNORE
关键字,或者更好地处理错误
altertablemoviedirector添加唯一索引(mid,did);
IF NOT EXISTS(SELECT * FROM MovieDirector WHERE mid = $movieId AND did = $directorId)
INSERT INTO MovieDirector (mid, did) VALUES ($movieId, $directorId)
IGNORE
关键字..这会在以后咬到你)
如果我没有强调您应该真正使用参数化查询,而不是将变量直接添加到查询字符串中,那么这个答案将是不完整的!如果我们没有强调停止,这个答案的可能副本也将是不完整的。使用。
mysql.*
!!它已经被弃用了一段时间,并且彻底删除PHP7中的ved。说真的,文档中有一个解释。