php - 重复条目

时间:2012-01-21 16:02:39

标签: php database duplicates

如果条目加倍会怎么办?

<?php
require_once('auth.php');
session_start();
$exam = $_SESSION['exam'];
$subject_id = $_SESSION['exam']; 
$_SESSION['sub'] = $subject_id; 
$subject_title = $_POST['subject_title'];
$subject_description = $_POST['subject_description'];
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}  
mysql_select_db('db_compre', $con);
$sql = "INSERT INTO examsubjectrecord_table(subject_id , subject_title ,
        subject_description)
        VALUES ('$subject_id','$subject_title', '$subject_description')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
else
{
header("location: addsubject.php?exam=".$exam ."");
}
?>`  

Notice: A session had already been started - ignoring session_start() in C:\xampp\htdocs\compre\admin\addsubjectacc.php on line 4  
**Error: Duplicate entry '1' for key 'PRIMARY'**

4 个答案:

答案 0 :(得分:3)

这取决于你的应用程序业务逻辑。

您可以通过INSERT ... ON DUPLICATE KEY UPDATE ... SQL语句通知用户有关重复的条目或以静默方式更新信息。

答案 1 :(得分:1)

在您的数据库中,您有一个subject_id的主键,它不能重复。

如果您需要在subject_id列中包含重复项,则应添加一列并将其设置为数据库中的主键。例如,添加另一列unique_id并将其设置为auto_increment并作为行标识的主键。

答案 2 :(得分:0)

基本上,您首先要检查您尝试插入主键字段的值是否已经存在。

因此,如果主键字段是subject_id,则需要通过执行选择查询以及PHP的mysql_num_rows函数来检查是否已存在。例如:

$subject_id = 1337;
$check = mysql_query("SELECT `subject_id` FROM `examsubjectrecord_table` WHERE `subject_id`=" . $subject_id);

// See if anything was returned
if(mysql_num_rows($check) > 0) {
    // We have something with this subject_id already!
    echo "Cannot insert duplicate subject!";
} else {
    // All clear, run your INSERT query here
}

答案 3 :(得分:0)

哪一列是您的主键?我假设那是subject_id。这对于表中的每一行都必须是唯一的。确保这一点的最简单方法是使用AUTO_INCREMENT,然后避免插入subject_id。它将自动分配。

如果您需要了解新主题的ID,可以使用mysql_insert_id