Php PDO INSERT不在mysql中注册重复记录

Php PDO INSERT不在mysql中注册重复记录,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,您好,我有以下PDO插入数据库函数,我如何检查数据库中是否已经记录了这样一个错误,即用户已经注册了此信息?我的桌子是这样整理的 id | curso_id | user_id 1 | 12 | 43 2 | 5 | 56 因此,如果curso_id=12和user_id=43的组合在数据库中,请不要注册这种类型的第二个组合,给出错误 $userid = $_SESSION['userID']; $cursoid = $_GET["id"]; try {

您好,我有以下PDO插入数据库函数,我如何检查数据库中是否已经记录了这样一个错误,即用户已经注册了此信息?我的桌子是这样整理的

id | curso_id | user_id 
1  | 12       | 43
2  | 5        | 56
因此,如果curso_id=12和user_id=43的组合在数据库中,请不要注册这种类型的第二个组合,给出错误

$userid = $_SESSION['userID'];  
$cursoid = $_GET["id"];

try {

          $con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); //our new PDO Object
          $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
          $stmt = $con->prepare( "Insert Into subscriptions ( curso_id, user_id ) Values ('$cursoid', '$userid')" );
          $stmt->execute();

       } catch (PDOException $e) {
              echo "I'm sorry there is a problem with your operation.."; $e->getMessage(); //catch and show the error
       }

$con = null;
header( 'Location: cursos.php' ) ;
}

提前感谢您的帮助,三思而后行。在插入之前执行
选择
,这将显示是否已有相关记录


反应性地,将
唯一(游标id、用户id)
约束添加到表中。这将在所有其他操作都失败时保护您的数据…

设置唯一索引:
UNIQUE(curso\u id,user\u id)
约束。
然后您可以在重复密钥更新时使用类似于
的查询子句:

INSERT INTO subscriptions
    ( curso_id, user_id )
    VALUES
    ('12', '43')
    ON DUPLICATE KEY UPDATE user_id = user_id;
如果受影响的
1
,则插入新行。
如果受影响的
2
,则会更新现有行

根据受影响的行值,您可以选择向用户显示适当的消息。




只是一个旁注,您没有使用准备好的语句。$userid来自会话中的登录用户。$cursoroid来自另一个数据库sqlquery,该数据库显示数据库中的文章。其目的是使两个列兼容,如果插入的内容匹配,则一定要给出错误,不要放置重复的记录$userid它将始终大于0,因为每次插入时,您都在两列上插入内容。使用此方法可以更新这两个语句,如update user\u id=user\u id;而curso_id=curso_id?好的,我确实想出来了,现在它工作得很好,谢谢