PHP でデータベースを操作する場合、多くの場合、MySQL コードを PDO (PHP データ オブジェクト) ステートメントに変換する必要があります。 PDO は、基礎となるドライバーに関係なく、データベースと対話するための一貫した安全な方法を提供します。このガイドでは、MySQL コードを PDO ステートメントに変換する方法を説明します。
最初のステップは、PDO を使用してデータベースへの接続を作成することです。その方法の例を次に示します。
$db_host = "127.0.0.1"; $db_name = "database_name"; $db_user = "username"; $db_pass = "password"; $pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
PDO 接続を確立したら、MySQL コードを PDO ステートメントに変換し始めることができます。
mysqli と PDO を使用したプリペアド ステートメント
プリペアド ステートメントは、ユーザーが指定したデータを含むクエリを実行する安全な方法です。実行前にデータをクエリにバインドすることで SQL インジェクションを防ぎます。
MySQLi でのプリペアド ステートメントの例を次に示します:
$sql = "SELECT * FROM users WHERE username = ? AND password = ?"; $stmt = $mysqli->prepare($sql); $stmt->bind_param("ss", $username, $password); $stmt->execute(); $result = $stmt->get_result();
PDO での同じクエリは次のとおりです:
$sql = "SELECT * FROM users WHERE username = ? AND password = ?"; $stmt = $pdo->prepare($sql); $stmt->bindParam(1, $username, PDO::PARAM_STR); $stmt->bindParam(2, $password, PDO::PARAM_STR); $stmt->execute(); $result = $stmt->fetchAll();
更新されたコード
質問の MySQL コードを PDO ステートメントに変換する方法の例を次に示します:
$id = $_SESSION['u_id'] ?? NULL; if ($id) { $sql = "SELECT email FROM users WHERE u_id = ?"; $stmt = $pdo->prepare($sql); $stmt->execute([$id]); $email = $stmt->fetchColumn(); } $email = $email ?? ""; $suggestions = selectAll($table); $optionOne = $_POST['optionOne'] ?? ""; $optionTwo = $_POST['optionTwo'] ?? ""; $newSuggestion = $_POST['new-suggestion'] ?? ""; if ($newSuggestion && $id && $email && $optionOne && $optionTwo) { $sql = "INSERT INTO suggestions (user_id, email, option_1, option_2) VALUES (?, ?, ?, ?)"; $stmt = $pdo->prepare($sql); $stmt->execute([$id, $email, $optionOne, $optionTwo]); } else { echo "All options must be entered"; }
MySQL コードを PDO ステートメントに変換するプロセスは比較的簡単です。このガイドで概説されている手順に従うことで、コードを PDO に簡単に移行し、セキュリティやパフォーマンスの向上などの利点を活用できます。
以上がMySQL コードを PDO ステートメントに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。