2011-07-21 12 views
1

私はできるだけ安全にデータベースを作りたいと思っています。私が学んだことの1つは、準備されたステートメントを使うことです。プリペアドステートメントを使用したステートメントメソッド呼び出しの正しい順序は?

実行の順序が正しいことを確認するために確認が必要です。

次のことは意味がありますか、または何か不足していますか?

$sql = 'SELECT ...'; 
$conn = @ new mysqli($host, $user, $pwd, $db); 

$stmt = $conn->stmt_init(); // initialize a prepared statement 

$stmt->prepare($sql); 
$stmt->bind_param('i', ...); 
$stmt->bind_result(..., ..., ...); 
$stmt->execute(); 

while ($stmt->fetch()) { 
    ... 
} 

$stmt->free_result(); // free the database resources for other queries 
$stmt->close(); // close statement 
$conn->close(); //close the database connection 
私はあなたが stmt_init()を呼び出す必要はありませんと言うでしょう

答えて

0

- あなたはまた、場合がありますmysqli::prepare()

のページの例によれば、少なくとも、必要ではないようですチェックする:

0

二つのあら探しの戻り値をテストし、

  • それを使用する前に、mysqli::prepare()の戻り値をチェックします:

    1. @
    2. でエラーを抑制しないDB関連の操作が成功したと仮定してはいけません。 ->prepare()に電話をかけるなどのエラーの場合は常にチェックしてください.SQL文に構文エラーがありますが、すべてが完全に完了したかのように盲目的に処理します。実際のクエリの実行にも同じです。クエリは100%の構文上正しいかもしれませんが、外部の理由で失敗します。
  • 関連する問題