2012-02-12 7 views
3

PHP内のプリペアドステートメントに関する質問がありました。私は以前にデータベースのデータを操作するためにmysql_query関数を使用していましたが、セキュリティ上の問題についてはプリペアドステートメントの使用を検討するべきだと言われました。私は移行を行いましたが、クエリが失敗したかどうかを検出する方法について、いくつか質問があります。プリペアドステートメントのエラーの検出

以下にサンプルコードがあります。 $ con変数は、私が試行しているクエリに応じて特定の接続です。この場合、選択された権限のみを持つアカウントを介してデータベースに接続されます。

$stmt = $con->stmt_init(); 
$stmt->prepare("SELECT COUNT(*) FROM users WHERE username=?"); 
$stmt->bind_param('s', $username); 
$stmt->execute(); 
$stmt->bind_result($user_count); 
$stmt->fetch(); 
$stmt->close(); 

どのようにこれらのステップで障害が検出されるのか疑問に思っていましたか?私が想像できるもっとも簡単な解決策は、単純にtry/catchを使ってコードをラップすることです。しかし、これを行うもっと洗練された方法があるのだろうかと思っていました。

私の質問を読んでくれてありがとう。あなたが次のことを行うことができ、ジャレッドさんのコメントに拡大すること

+0

http://www.php.net/manual/en/pdo.error-handling.php –

答えて

1

$stmt->execute(); 
if(!$stmt->errorCode()){ 
    // do something with results 
}else{ 
    // do something with the error 
} 
$stmt->close(); 
+0

'empty'は動作しません。関数呼び出しについて'!$ stmt-> errorCode()'をしますか? – deceze

+0

@deceze Oopsies、はい。ありがとう。 – Farray

関連する問題