PHP アドバンス

PHP MySQL データの削除

1. MySQLテーブルのデータを削除する

MySQLテーブルからレコードを削除するには、SQLの DELETE ステートメントを使用します。

DELETE FROM table_name
WHERE some_column = some_value

注意:WHERE 句は、どのレコードを削除するかを指定する重要なセクションです。もし WHERE 句を省略して実行した場合、テーブル内のすべてのレコードが削除されます!

2. MySQLiを使用したデータの削除

以下の例で使用する「MyGuests」テーブルの状態を確認してみましょう。

idfirstnamelastnameemailreg_date
1JohnDoe[email protected]2024-10-22 14:26:15
2MaryMoe[email protected]2024-10-23 10:22:30
3JulieDooley[email protected]2024-10-26 10:48:23

以下のコードでは、「MyGuests」テーブルの中から id=3 のレコードを削除します。

2.1 MySQLi オブジェクト指向(Object-oriented)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 接続の作成
$conn = new mysqli($servername, $username, $password, $dbname);
// 接続の確認
if ($conn->connect_error) {
  die("接続に失敗しました: " . $conn->connect_error);
}

// レコードを削除するSQL
$sql = "DELETE FROM MyGuests WHERE id=3";

if ($conn->query($sql) === TRUE) {
  echo "レコードが正常に削除されました";
} else {
  echo "レコード削除エラー: " . $conn->error;
}

$conn->close();
?>

2.2 MySQLi 手続き型(Procedural)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 接続の作成
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 接続の確認
if (!$conn) {
  die("接続に失敗しました: " . mysqli_connect_error());
}

// レコードを削除するSQL
$sql = "DELETE FROM MyGuests WHERE id=3";

if (mysqli_query($conn, $sql)) {
  echo "レコードが正常に削除されました";
} else {
  echo "レコード削除エラー: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

3. PDOを使用したデータの削除

同様に、PDOを使用して id=3 のレコードを削除する実装例です。

3.1 PDOによる実装例

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  // PDOエラーモードを例外(Exception)に設定
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
  die("接続できませんでした。 " . $e->getMessage());
}

try {
  // レコードを削除するSQL
  $sql = "DELETE FROM MyGuests WHERE id=3";
  $conn->exec($sql);
  echo "レコードが正常に削除されました";
} catch(PDOException $e) {
  echo "レコード削除エラー: " . $sql . "<br>" . $e->getMessage();
}

$conn = null;
?>

レコード削除後のテーブルは、以下のようになります。

idfirstnamelastnameemailreg_date
1JohnDoe[email protected]2024-10-22 14:26:15
2MaryMoe[email protected]2024-10-23 10:22:30