ホームページ >データベース >mysql チュートリアル >パラメータ化されたクエリは SQL インジェクションをどのように防ぐのでしょうか?
パラメータ化されたクエリ: SQL インジェクションに対するシールド
パラメータ化されたクエリについて
パラメータ化されたクエリは準備済みステートメントとも呼ばれ、SQL ステートメントを作成するための手法です。 これにより、動的データ (パラメーター) がクエリの固定部分から分離されます。これにより、実行時に効率的なパラメータ設定が可能になります。
PHP と MySQL: 実践的なデモンストレーション
ユーザーの電子メール アドレスのパラメーターを含む SQL クエリを使って説明してみましょう。
<code class="language-sql">SELECT * FROM users WHERE email = 'foo@example.com'</code>
mysqli による実装
<code class="language-php"><?php $mysqli = new mysqli('localhost', 'username', 'password', 'database'); $stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?"); $stmt->bind_param('s', 'foo@example.com'); $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { // Process the retrieved data... } $stmt->close(); ?></code>
PDO による実装
<code class="language-php"><?php $pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password'); $stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?"); $stmt->bindParam(1, 'foo@example.com', PDO::PARAM_STR); $stmt->execute(); $result = $stmt->fetchAll(); foreach ($result as $row) { // Process the retrieved data... } ?></code>
パラメータ化されたクエリの主な利点:
以上がパラメータ化されたクエリは SQL インジェクションをどのように防ぐのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。