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

PHPベースチュートリアル

PHPハイレベルチュートリアル

PHP & MySQL

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

PHP MySQL UPDATE

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

データベーステーブルのデータを更新する

UPDATEデータベーステーブルの既存レコードを変更または修正するためのステートメントです。このステートメントは、WHERE子句と組み合わせて使用されることが多く、特定の条件に一致するレコードのみに変更を適用します。

UPDATE语句的基本语法可以通过以下方式给出:

UPDATE table_name SET column1=value, column2=value2,... WHERE column_name=some_value

让我们使用UPDATE语句和WHERE子句进行一个SQL查询,然后通过将其传递给PHP mysqli_query()函数来执行此查询,以更新表记录。请考虑演示数据库中的以下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テーブルのidが1のメールアドレス。

例:プロセス指向的スタイル

<?php
/*MySQLサーバーへの接続を試みます。 MySQLを実行していることを仮定します。
デフォルト設定のサーバー(パスワードが無いユーザー「root」) */
$link = mysqli_connect("localhost", "root", "", "demo");
 
//接続を確認する
if($link === false) {
    die("エラー:接続できません。\n" . mysqli_connect_error());
}
 
//クエリの実行を試みます
$sql = "UPDATE persons SET email='[email protected]' WHERE id=1'';
if(mysqli_query($link, $sql)){
    echo "レコードが成功して更新されました。";
} else {
    echo "エラー:$sqlを実行できません。\n" . mysqli_error($link);
}
 
//接続を閉じます
mysqli_close($link);
?>

例:オブジェクト指向的スタイル

<?php
/*MySQLサーバーへの接続を試みます。 MySQLを実行していることを仮定します。
デフォルト設定のサーバー(パスワードが無いユーザー「root」) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//接続を確認する
if($mysqli === false) {
    die("エラー:接続できません。\n" . $mysqli->connect_error);
}
 
//クエリの実行を試みます
$sql = "UPDATE persons SET email='[email protected]' WHERE id=1'';
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 = "UPDATE persons SET email='[email protected]' WHERE id=1'';    
    $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] |
|  2 | John       | Rambo     | [email protected]       |
|  3 | Clark      | Kent      | [email protected]       |
|  4 | John       | Carter    | [email protected]      |
|  5 | Harry      | Potter    | [email protected]      |
+----+------------+-----------+--------------------------+

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