sql >> データベース >  >> RDS >> Mysql

指定された値がフィールドに見つかった場合、PDO MySQLステートメントを拒否しますか?

    PDOを使用している場合は、例外をキャッチしてステータスコードを確認できます(例:

    )。
    // make sure you're set to throw exceptions
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $stmt = $pdo->prepare('INSERT INTO `user` (`email`) VALUES (?)');
    try {
        $stmt->execute([$email]);
    } catch (PDOException $e) {
        $errorInfo = $stmt->errorInfo(); // apparently PDOException#getCode() is pretty useless
        if ($errorInfo[1] == 1586) {
            // inform user, throw a different exception, etc
        } else {
            throw $e; // a different error, let this exception carry on
        }        
    }
    

    http://dev.mysqlを参照してください。 com / doc / refman / 5.5 / en / error-messages-server.html#error_er_dup_entry_with_key_name

    MySQLiを使用する場合、プロセスは同様になります

    $stmt = $mysqli->prepare('INSERT INTO `user` (`email`) VALUES (?)');
    $stmt->bind_param('s', $email);
    if (!$stmt->execute()) {
        if ($stmt->errno == 1586) {
            // inform user, throw a different exception, etc
        } else {
            throw new Exception($stmt->error, $stmt->errno);
        }
    }
    



    1. スクロール可能なJTableの作成方法

    2. MySQL SELECTINTOOUTFILEエクスポートオプション

    3. SQLServerで複数のNULL値を許可する一意の制約を実装する適切な方法

    4. MySQLでSELECT...FORUPDATEを使用したデッドロック