mysql_real_escape_string() を PDO に置き換える
mysql_* 関数から PDO への移行では、PDO が次のことを行うことを理解することが重要です。 mysql_real_escape_string().
と完全に同等のものはありません。PDO は文字列を手動でエスケープする代わりに、準備されたステートメントを使用して SQL インジェクションから保護します。準備されたステートメントでは、後で挿入される値にプレースホルダー (?) を使用し、悪意のある文字がコードとして実行されるのを防ぎます。
例:
<code class="php"><?php // Connect to the database $db = new PDO('mysql:host=localhost;dbname=test', 'root', 'password'); // Prepare the statement with placeholder for value $stmt = $db->prepare('SELECT * FROM users WHERE username = ?'); // Bind the value to the placeholder (already sanitized via other means) $stmt->bindParam(1, $username); // Execute the statement without fear of SQL injection $stmt->execute(); // Fetch the results $users = $stmt->fetchAll(PDO::FETCH_ASSOC);</code>
利点PDO の使用による効果:
注: PDO::quote() は文字列をエスケープするために使用できますが、同じレベルを提供しないため、通常は推奨されません
ベスト プラクティスに従い、PDO でプリペアド ステートメントを使用することで、開発者はコード内の SQL インジェクションの脆弱性を効果的に防ぐことができます。
以上が「mysql_real_escape_string()」から PDO プリペアドステートメントに移行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。