我有两个表的mysql数据库。第一个表称为“ uniqueReferences”,第二个表称为“ duplicatedReferences”。这两个表只有两个字段:id字段(自动递增)和一个称为Reference的字段。我想要的如下。尝试在“ uniqueReferences”表中插入引用时,如果引用已存在,则不要将其插入该表中,而应插入表“ duplicatedReferences”中。

因此,我尝试了以下但没有成功的方法。
1->将我的“ uniqueReferences”表的字段引用设置为“ unique”。
2->做以下

try{
         $req = $prepared_insertQry_toUniqueRefTable -> execute(array(something));

         if($req == 0){
               $prepared_insertQry_toDuplicateRefTable->execute(array(something));
         }
     }
    catch(PDOException $e){echo $e->getMessage();}


不幸的是,这是行不通的。我出现以下错误SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry。希望有人能帮忙。干杯。渣

最佳答案

请参阅代码中的注释:

    try{
         $req = $prepared_insertQry_toUniqueRefTable -> execute(array(something));

         // this never executes because an Exception halts it here
         /*if($req == 0){
               $prepared_insertQry_toDuplicateRefTable->execute(array(something));
         }*/
     }
    catch(PDOException $e){
       // this catch grabs the exception and executes the code within instead
       // that code might log an error, echo the error message, or perform
       // alternative logic. In your case you want to execute alterntative logic
       // ie. your query
       $prepared_insertQry_toDuplicateRefTable->execute(array(something));

   }

07-24 21:15