質問:
mysql_* から PDO に移行する場合、mysql_real_escape_string と同等のものは何ですか? mysql_real_escape_string 関数?
答え:
mysql_real_escape_string とは異なり、PDO は準備されたステートメントを使用して自動エスケープを実行します。プリペアド ステートメントは、SQL クエリにユーザー入力を直接挿入する代わりに、プレースホルダ (例: ?) を使用して、SQL インジェクションの脆弱性を防ぎます。
例:
<code class="php">try { $db = new PDO(...); } catch (PDOException $e) { echo "Error connecting to mysql: " . $e->getMessage(); } if (isset($_POST['color'])) { $stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?"); $stmt->execute([$_POST['color']]); $cars = $stmt->fetchAll(\PDO::FETCH_ASSOC); var_dump($cars); }</code>
この例では、$_POST['color'] はプリペアド ステートメントのパラメーターとして渡され、クエリをインジェクションから保護します。
追加の注意事項:
以上がmysql_* から PDO に移行するときにユーザー入力をエスケープする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。