English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、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(); ?>
<?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子句を省略すると、すべてのレコードが削除されます。