質問:
古い mysql_* 関数を次のステートメントに置き換えるにはどうすればよいですか? PDO とプリペアド ステートメントを使用して、データベースにデータを安全に保存したりデータベースから取得したりできますか?
答え:
$hostname = '*host*'; $username = '*user*'; $password = '*pass*'; $database = '*database*'; $dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$username = $_POST['username']; $email = $_POST['email']; $stmt = $dbh->prepare("INSERT INTO `users` (username, email) VALUES (?, ?)"); $stmt->bindParam(1, $username, PDO::PARAM_STR); $stmt->bindParam(2, $email, PDO::PARAM_STR); $stmt->execute();
PDO::PARAM_STR には長さパラメーターは必要ありません。ただし、データベース テーブルのフィールドに最大文字数制限がある場合は、以下に示すように PDO::PARAM_STR の後にそれを指定できます。
$stmt->bindParam(1, $username, PDO::PARAM_STR, 255);
$user_id = $_GET['id']; $stmt = $dbh->prepare("SELECT * FROM `users` WHERE `id` = ?"); $stmt->bindParam(1, $user_id, PDO::PARAM_INT);
以上が安全なデータベース相互作用のために、古い「mysql_*」関数を PDO およびプリペアドステートメントに置き換えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。