English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP基本チュートリアル

PHP上級チュートリアル

PHP & MySQL

PHPリファレンスマニュアル

PHP MySQLのDELETE

このチュートリアルでは、PHPを使用してMySQLテーブルからレコードを削除する方法を学びます。

データベーステーブルデータの削除

レコードを挿入するのと同様に、SQLを使用して DELETEテーブルからレコードを削除します。通常WHERE子句と組み合わせて使用され、特定の条件や条件に一致するレコードのみを削除します。

DELETE文の基本的な構文は以下のように示されます:

DELETE FROM table_name WHERE column_name=some_value

DELETE文とWHERE子句を使用してSQLクエリを実行し、PHP mysqli_query()関数にそのクエリを渡してテーブルレコードを削除する方法を見てみましょう。demoデータベースの以下のpersonsテーブルを見てください:

+----+------------+-----------+----------------------+
| id | first_name | last_name | email                |
+----+------------+-----------+----------------------+
|  1 | Peter      | Parker    | [email protected] |
|  2 | John                       | Rambo                   | [email protected]           |
|  3 | Clark      | Kent      | [email protected]   |
|  4 | John                       | Carter                   | [email protected]           |
|  5 | Harry      | Potter    | [email protected] |
+----+------------+-----------+----------------------+

以下のPHPコードは、personsテーブルから削除されます。first_nameJohnと同じ人物のレコード。

例:プロセス指向型

<?php
/* MySQLサーバー接続を試みます。 MySQLを実行していると仮定しています。
デフォルト設定のサーバー(パスワードのないユーザー“root”) */
$link = mysqli_connect("localhost", "root", "", "demo");
 
//接続を確認します
if($link === false){
    die("エラー:接続できません。" . mysqli_connect_error());
}
 
//削除を実行しようとします
$sql = "DELETE FROM persons WHERE first_name='John'";
if(mysqli_query($link, $sql)){
    echo "レコードが成功して削除されました。";
} else{
    echo "エラー:$sqlを実行できません。" . mysqli_error($link);
}
 
//接続を閉じます
mysqli_close($link);
?>

例:オブジェクト指向型

<?php
/* MySQLサーバー接続を試みます。 MySQLを実行していると仮定しています。
デフォルト設定のサーバー(パスワードのないユーザー“root”) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//接続を確認します
if($mysqli === false){
    die("エラー:接続できません " . $mysqli->connect_error);
}
 
//削除を実行しようとします
$sql = "DELETE FROM persons WHERE first_name='John'";
if($mysqli->query($sql) === true){
    echo "レコードが成功して削除されました。";
} else{
    echo "エラー:$sqlを実行できません " . $mysqli->error;
}
 
//接続を閉じます
$mysqli->close();
?>

例:PDO方式

<?php
/* MySQLサーバー接続を試みます。 MySQLを実行していると仮定しています。
デフォルト設定のサーバー(パスワードのないユーザー“root”)*/
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //PDOのエラーモードを例外に設定します
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("エラー:接続できません " . $e->getMessage());
}
 
//クエリの実行を更新しようとします
try{
    $sql = "DELETE FROM persons WHERE first_name='John'";  
    $pdo->exec($sql);
    echo "レコードが成功して削除されました。";
} catch(PDOException $e){
    die("エラー:$sqlを実行できません " . $e->getMessage());
}
 
//接続を閉じます
unset($pdo);
?>

削除後、persons表は以下のようになります:

+----+------------+-----------+----------------------+
| id | first_name | last_name | email                |
+----+------------+-----------+----------------------+
|  1 | Peter      | Parker    | [email protected] |
|  3 | Clark      | Kent      | [email protected]   |
|  5 | Harry      | Potter    | [email protected] |
+----+------------+-----------+----------------------+

ご覧の通り、レコードがpersonsテーブルから成功して削除されました。

警告:DELETE文のWHERE子句は、どのレコードを削除するかを指定します。WHERE子句を省略すると、すべてのレコードが削除されます。