2012-03-01 19 views
15

次のクエリが正常に実行されたかどうかをテストするにはどうすればよいですか?PHP PDOでクエリが正常に実行されたかどうかを確認するには?

$STH = $this->_db->prepare("UPDATE UserCreds SET 
    VerificationString=:newVerificationString, ExpiryDate=:expiryDate 
    WHERE UserID = :userID;"); 
$STH->execute($params); 

私は新しい行を追加することが、何UPDATEおよびSELECT文についてだとき、私はlastInsertId()を使用することができます知っていますか?

+0

@Pekkaハズレを、私は、エラーメッセージがうまく取得することができます。 –

+4

http://de.php.net/manual/en/pdostatement.execute.phpさんのコメント:*成功した場合はTRUEを返し、失敗した場合はFALSEを返します。* - それを変数にバインドします。 '$ success = $ STH-> execute($ params);'を実行し、その変数を 'true'または' false'にチェックします。 – Quasdunk

答えて

35

executeは成功するとtrue、失敗した場合はfalseを返します。成功した場合にTRUEを、失敗した場合にFALSE

From Docs:

返します。


だから、必ず、クエリは次のように正常に実行することができます:

if ($STH->execute($params)) 
{ 
    // success 
} 
else 
{ 
    // failure 
} 
+0

なので 'if($ STH-> execute($ params)){echo" Success! "; } else {echo "失敗!"; } '? –

+0

@DjangoReinhardt:はい、そうです:)後でそれを使用する必要がある場合は、変数に 'execute'の結果を格納することもできます。 – Sarfraz

+0

説明をありがとう! –

15

(実行)クエリの成功/失敗に基づいて偽/ trueを返します:

$status = $STH->execute($params); 

if ($status) { 
    echo 'It worked!'; 
} else { 
    echo 'It failed!'; 
} 

ワン注:行を返さないselectクエリは失敗ではありません。それはまったく有効な結果であり、結果はまったく起こりません。

+3

+1便利なメモ、ありがとう! –

-3

これは、教義クエリ結果の戻り成功を検証するための最良の方法であるか、上記のとおり 結果と同じように失敗したが、天候のクエリに偽に失敗しました真と上 リターン成功を確認することをお勧めします。

public static function removeStudent($teacher_id){ 
     $q = Doctrine_Query::create() 
      ->delete('Student s') 
      ->where('s.teacher_id = ?'); 

     $result = $q->execute(array($teacher_id)); 

     if($result) 
     { 
     echo "success"; 
     }else{ 
     echo "failed"; 
     } 
    } 
1

単に私が行った行の数数えることができます:

$stmt->execute(); 
$count = $stmt->rowCount(); 

if($count =='0'){ 
    echo "Failed !"; 
} 
else{ 
    echo "Success !"; 
} 
+0

これはUPDATEを使用している場合のみ動作します –

+0

はい、これはUPDATEのためのものです。質問したクエリを見てください。UPDATE –

+1

質問には、「UPDATEとSELECTについてはどうですか? –

関連する問題