ホームページ >バックエンド開発 >PHPチュートリアル >MySQL で INSERT INTO クエリに PDO プリペアド ステートメントを適切に使用する方法
PDO を使用する場合、プリペアド ステートメントによる MySQL クエリの実行は少し難しい場合があります。提示された問題を詳しく調べて、解決策を明らかにしましょう。
提供されたコードでは、INSERT INTO ステートメントは prepare() メソッドを使用して構築されています。このメソッドはステートメントを準備しますが、実行はしません。実際にクエリを実行してデータを挿入するには、execute() メソッドを呼び出す必要があります。
さらに、PDO でプリペアド ステートメントを使用する場合は、プレースホルダー (:name、:lastname など) を使用することが不可欠です。値を直接埋め込むのではなく、SQL クエリを使用します。プレースホルダーを使用すると、後で準備されたステートメントに値をバインドできます。このアプローチにより、SQL インジェクションの脆弱性が防止され、セキュリティが強化されます。
修正されたコードは次のようになります。
$dbhost = "localhost"; $dbname = "pdo"; $dbusername = "root"; $dbpassword = "845625"; $link = new PDO("mysql:host=$dbhost;dbname=$dbname", "$dbusername", "$dbpassword"); $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Set error mode to exception $statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES(:name, :lastname, :age)"); $statement->bindParam(':name', 'Bob'); $statement->bindParam(':lastname', 'Desaunois'); $statement->bindParam(':age', 18); $statement->execute();
プレースホルダーを使用し、bindParam() を使用して値をバインドすることにより、クエリが適切に実行されます。そしてデータがデータベースに挿入されます。準備されたステートメントは、SQL インジェクションを防止し、データの整合性を確保するのに役立ちます。
以上がMySQL で INSERT INTO クエリに PDO プリペアド ステートメントを適切に使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。