1
   <input type="text" name="CODE" size="25" placeholder="Insert code..." />

   <input type="text" name="NAME" size="25" placeholder="Insert name..." />

  if(isset($_POST['CODE'], $_POST['NAME'])){

         $querystring='INSERT INTO Company (Name, Code) VALUES(:Name,:Code);';

         $stmt = $pdo->prepare($querystring);
         $stmt->bindParam(':Name', $_POST['NAME']);
         $stmt->bindParam(':Code', $_POST['Code']);
         $stmt->execute();

}

おい!

私が抱えている問題は、PHP でより適切な方法で SQL エラーを表示することです。コードが「123」で名前が「ABC」の会社を挿入するとします。そして、コード '123' を持つ会社を挿入した後、明らかに、そのコードのエントリが重複しているというエラーが表示されます。

私が得ているエラーは

Warning: PDOStatement::execute(): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry

このエラーまたは警告を、ユーザーが挿入しようとしているコードが既に存在することをユーザーに伝えるメッセージに単純に置き換えることはできません。

なんとか説明できれば幸いです、ありがとう!

4

1 に答える 1

1

このようにツアークエリを処理してみてください。うまくいくことを願っています

try{
    $pdo->query("INSERT INTO `table`(`name`,`value`)`VALUES('name','value')");
}
catch (PDOException $e) {
    if($e->errorInfo[0] == '23000' && $e->errorInfo[1] == '1062'){
        throw new CustomException("Bla bla already exists");
    } 
    else {
    throw $e;
    }
}
于 2013-10-03T12:14:46.807 に答える