ホームページ >バックエンド開発 >PHPチュートリアル >データベースの操作では常に準備済みステートメントを使用する必要がありますか?
プリペアド ステートメントが不可欠な場合
最初はデータベース インタラクションの管理に mysql_connect と mysql_query を使用していましたが、SQL インジェクションに関する懸念から調査する必要がありました。準備されたステートメント。ただし、よくある誤解が生じます。プリペアド ステートメントはユーザー入力を保護するためにのみ必要なのでしょうか?
常にプリペアド ステートメントを使用する必要がある理由
答えは確実です。常にプリペアド ステートメントを使用してください。例外なく、ステートメント。 mysql_num_rows の使用でハッキングのリスクが目に見えてわからない場合でも、次の理由から準備済みステートメントの使用が優れています:
プリペアド ステートメントの仕組み
プリペアド ステートメントはクエリとデータを別々に送信するため、データベースを使用してそれらを 1 つのトランザクションとして実行します。この安全策は、mysql_* 関数で行われていたクエリとデータの連結よりもはるかに堅牢で、データベースが SQL インジェクションの影響を受けやすくなります。
PHP ライブラリでのプリペアド ステートメントの使用
PDO では、次のコード例を使用して、準備されたコードを利用できます。ステートメント:
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?,?)"); $stmt->execute([$name, $value]);
MySQLi のコードは次のとおりです:
$dbh->execute_query("INSERT INTO REGISTRY (name, value) VALUES (?,?)", [$name, $value]);
追加リソース
以上がデータベースの操作では常に準備済みステートメントを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。