PHP で MySQLi ステートメントを PDO に変換するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-06 03:34:02
オリジナル
210 人が閲覧しました

How to convert a MySQLi statement to PDO in PHP?

PDO を使用して SQL 変換を行う方法

概要

PDO (PHP データ オブジェクト) ) は、PHP でデータベースと対話するための統合 API を提供します。 SQL クエリを作成および実行するための、構造化された一貫した方法を提供します。この記事では、提供された PHP コードの最初の if ステートメントを、データベース アクセスに mysqli の使用から PDO の使用に変換する方法を説明します。

コードの更新

で PDO を使用するにはif ステートメントでは、データベース接続パラメーターを定義することから始めます:

$db_host = "127.0.0.1";
$db_name = "name_of_database";
$db_user = "user_name";
$db_pass = "user_password";

// Create a connection to the MySQL database
$pdo = new PDO(
    "mysql:host={$db_host};dbname={$db_name}",
    $db_user,
    $db_pass,
    [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_EMULATE_PREPARES => FALSE
    ]
);
ログイン後にコピー

次に、PDO プリペアド ステートメントを使用するように if ステートメントを更新します:

if ($id) {
    $sql = "SELECT email FROM users WHERE u_id = ?";
    $query = $pdo->prepare($sql);    // Prepare the query 
    $query->execute([$id]);          // Bind the parameter and execute the query 
    $email = $query->fetchColumn();  // Return the value from the database
}
ログイン後にコピー

fetchColumn() メソッドは、単一の

追加の考慮事項

  • エラー処理: PDO を使用する場合、例外は適切に処理される必要があります。
  • パラメータ バインディング: SQL インジェクションの脆弱性を防ぐためにプリペアド ステートメントを使用します。
  • Null 合体演算子: 通知を防ぐために null 合体演算子 (??) を使用します。または変数が定義されていない場合のエラー。

完全な更新コード

$id = $_SESSION['u_id'] ?? NULL;

if ($id) {
    $sql = "SELECT email FROM users WHERE u_id = ?";
    $query = $pdo->prepare($sql);
    $query->execute([$id]);
    $email = $query->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 (?, ?, ?, ?)";
    $query = $pdo->prepare($sql);
    $query->execute([$id, $email, $optionOne, $optionTwo]);
} else {
    echo "All options must be entered";
}
ログイン後にコピー

PDO を使用するようにコードを変換することで、セキュリティが強化され、コードが改善されます。異なるデータベース システム間での移植性。

以上がPHP で MySQLi ステートメントを PDO に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート