2016-05-20 15 views
-2

は私のスクリプトです:挿入が失敗するかどうかを確認するには?ここ

try { 

    $stmt = $db_con->prepare(" INSERT INTO mytable (col) VALUES (?) "); 
    $inserting = $stmt->execute(array('anything')); 

    if ($inserting) { 
     echo 'successful'; 

    } else { 
     echo 'failed'; 
    } 

} catch(PDOException $e){ 

    echo 'failed'; 
} 

は、私の質問は何です:は、私が知りたいすべて、elsecatchは私のスクリプトで同じですか?つまり、elseが実行されると、

私はelseが実行されないと考えています。$inserting == falseの場合、catchブロックにジャンプし、elseが実行されないためです。私は正しい?それを書いてelseは役に立たないですか?

+0

なぜ知りたいですか?あなたがしなければ何をしますか? –

+0

@YourCommonSense私は 'else'を書かなければならないことを知りたいのです。 – stack

+0

elseとcatchの両方を削除してください –

答えて

0

まず私はあなたがそれが実際に挿入されているかどうかを確認するために

if($inserting->rowCount()==1){ 
    echo 'successful'; 
} else { 
    echo 'failed'; 
} 

を使用することをお勧めします。

elseは役に立たないものではありません。 pdoエラーのためにクエリが挿入されない場合、catchステートメントがエラーをキャッチします。しかし、pdoエラーや行数がなくても挿入できない場合は、else文が実行されます。

1

これは依存します。

ほとんどの場合、特定の挿入が失敗したかどうかを知りたくありません。しかし、むしろあなたのサイトが正常に動作しているかどうか。だから一般的にあなたのコードはちょうど

$stmt = $db_con->prepare(" INSERT INTO mytable (col) VALUES (?) "); 
$stmt->execute(array('anything')); 
echo 'successful'; 

と他の両方と一緒に使用する必要があります。

ただし、時にはという特定のエラーをキャッチすることがあります。この場合、catchを使用します。 code from my article

try { 
    $pdo->prepare("INSERT INTO users VALUES (NULL,?,?,?,?)")->execute($data); 
} catch (PDOException $e) { 
    if ($e->getCode() == 1062) { 
     // Take some action if there is a key constraint violation, i.e. duplicate name 
    } else { 
     throw $e; 
    } 
} 

ここでは、特定のエラーを検出して処理することがあります。

+0

私は 'try-catch'ブロックに挿入コードを書く必要があります。私の質問は、そのif-else文についてです。 – stack

+0

あなたの2番目のコードは良いです。 FYI '(int)$ e-> getCode()=== 23000'は' 1062'ではなく重複を意味します。また、挿入が成功したかどうかを知る必要があります。 – stack

+0

エラーがない限り、挿入は常に成功します。挿入に成功するための特別なコードは必要ありません。 –

0

あなたが実行されているブロック動作するようにしようとしている場合は、最も簡単なアイデアは、あなたがヒットブロックするに基づいてエコーだ内容を変更することであろうさまざまな出力

を試してみてください。

try { 
    if (...) { 
     ... 
    } else { 
     echo "Failed: Some Message"; 
    } 
} catch (Exception $e) { 
    echo "Failed: Some Other Message"; 
} 

また、ロガー機能やその他のデバッグ機能を追加することもできます。

+0

これはコメントであり、答えではありません。 –

+0

@YourCommonSenseいいえ、彼は 'else'がいつ実行するかを尋ねました。私の答えは、 'else'がいつ実行されるかを伝える方法を教えてくれます。 –

関連する問題