PDOで安全にデータベース操作をしよう

Webアプリケーションの多くは、ユーザー情報や記事などのデータをデータベースPDO(PHP Data Objects)を使って、安全かつ柔軟にMySQLと接続できます。

本記事では、PDOによるMySQL接続方法基本的なSQL操作(SELECT/INSERT/UPDATE/DELETE)、さらにフォームと連携したデータ登録処理まで、実用的なサンプルを交えてわかりやすく解説します。

MySQL接続(PDOの使い方)

<?php 
 $dsn = "mysql:host=localhost;dbname=sample_db;charset=utf8mb4"; 
 $user = "root"; $password = ""; 
 try { 
  $pdo = new PDO($dsn, $user, $password); 
  $pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
  echo "接続成功!"; 
 } catch (PDOException $e) { 
  echo "接続失敗: " . $e-&gt;getMessage(); 
 } 
>
  • dsn:データベース接続情報(host, dbname, charset)
  • setAttribute:エラーモードを例外に設定(推奨)

基本のSQL操作(SELECT, INSERT, UPDATE, DELETE)

サンプルテーブル users(id, name, email)を対象に、各操作の例を見てみましょう。

INSERT(データの追加)

<?php 
 $sql = "INSERT INTO users (name, email) VALUES (:name, :email)"; 
 $stmt = $pdo-&gt;prepare($sql); 
 $stmt-&gt;execute([ ":name" =&gt; "田中", ":email" =&gt; "tanaka@example.com" ]); 
 echo "登録完了"; 
>

SELECT(データの取得)

<?php  
 $sql = "SELECT * FROM users"; $stmt = $pdo-&gt;query($sql); 
 foreach ($stmt as $row) { 
  echo $row["name"] . "(" . $row["email"] . ")<br>"; 
 } 
>

UPDATE(データの更新)

<?php  
 $sql = "UPDATE users SET email = :email WHERE name = :name"; 
 $stmt = $pdo-&gt;prepare($sql); 
 $stmt->execute(
  [ ":email" => "tanaka_new@example.com", ":name" =&gt; "田中" ]
 );
 >

DELETE(データの削除)

<?php  
 $sql = "DELETE FROM users WHERE name = :name"; 
 $stmt = $pdo-&gt;prepare($sql); 
 $stmt->execute(
  [":name" => "田中"]
 ); 
>

prepare + executeでSQLインジェクション対策にもなります。

データベースと連携したフォーム処理

以下は、名前とメールを登録するフォーム+INSERT処理の連携例です。

<!-- form.php -->
<?php 
 $pdo = new PDO("mysql:host=localhost;dbname=sample_db;charset=utf8mb4", "root", ""); 
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
 $message = ""; 
 if ($_SERVER["REQUEST_METHOD"] === "POST") { 
  $name = trim($_POST["name"] ?? ""); 
  $email = trim($_POST["email"] ?? ""); 
  if ($name !== "" &amp;&amp; filter_var($email, FILTER_VALIDATE_EMAIL)) { 
   $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)"); 
      $stmt->execute([":name" =&gt; $name, ":email" =&gt; $email]); 
   $message = "登録が完了しました。"; 
  } else { 
   $message = "正しい名前とメールを入力してください。"; 
  } 
 } 
>

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h2>ユーザー登録フォーム</h2>
  <p><?= htmlspecialchars($message, ENT_QUOTES, "UTF-8") ?></p>
  <form method="post"> 名前:<input type="text" name="name"><br> 
   メール:<input type="email" name="email><br>
   <input type="submit" value="登録">
  </form> 
 </body>
</html>

まとめ

今回は、PHPでMySQLと安全にやり取りするための基本を解説しました。

  • PDOでのMySQL接続:セキュアで汎用的な方法
  • SQL基本操作:SELECT / INSERT / UPDATE / DELETE
  • フォーム連携:POSTからDBにデータを登録

この知識があれば、PHPによる本格的なWebアプリケーションの土台が整います。
次回は、入力フォーム+一覧表示+削除など、ミニCRUDアプリ作成を目指しましょう!

採用情報 長谷川 横バージョン
SHARE
PHP Code Snippets Powered By : XYZScripts.com