INSERT文、UPDATE文、DELETE文を実行する

 データベースにデータを追加・更新・削除する方法を見てみましょう。PDOクラスの「exec」メソッドを使って実行します。

クラス名 PDO
メソッド名 exec
概要 更新系のSQL文を実行し、影響を受けた行数を返す
パラメーターリスト
パラメター名 説明
string $statement 実行するSQL文を指定する
返り値
int 実行した結果、影響を受けた行数を返す。1行も影響を受けなかった場合は0を返す
execメソッドの仕様

■ データベースにデータを追加する

 「INSERT」文を使ってデータベースにデータを追加してみましょう。

○ ファイル

 「FetchObjectTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。

ファイルの種類 PHPファイル
ファイル名 ExecInsertTest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを記述してください。

ExecInsertTest.php

  1. <html lang="ja">
  2.  <meta charset="utf-8">
  3.  <head>
  4.   <title>INSERT文実行</title>
  5.  </head>
  6.  <body>
  7. <?php
  8. try{
  9.  //データベースに接続する
  10.  $pdo = new PDO('mysql:host=' . $host . ';dbname=' . $dbname .';charset=utf8;',
  11.   $username,
  12.   $password);
  13.  //SQL文を実行する
  14.  $result = $pdo -> query('SELECT * FROM users;');
  15.  //データを取得する
  16.  print('追加前*****');
  17.  while($row = $result -> fetchObject('User')){
  18.   var_dump($row);
  19.  }
  20.  //データを追加する
  21.  $ret = $pdo -> exec('INSERT INTO users VALUES("004", "tanaka", "tpass", "田中");');
  22.  //追加後のデータを取得する
  23.  $result = $pdo -> query('SELECT * FROM users;');
  24.  //データを取得する
  25.  print('<hr>追加後*****');
  26.  while($row = $result -> fetchObject('User')){
  27.   var_dump($row);
  28.  }
  29.  print('影響を受けた行数:' . $ret);
  30. }catch(PDOException $e){

○ 実行結果

実行結果
実行結果

○ 解説

 34行目でPDOクラスの「exec」メソッドにINSERT文を渡してSQL文を実行しています。これによりデータベース上でINSERT文が実行され、usersテーブルに行が追加されます。その結果、影響を受けた行数が返り値で取得できるので、変数$retに格納しています。

 37~43行目は、行が追加されたことを確認するために再びusersテーブルの全データを取得しています。実行結果を確認すると、データが増えていることがわかります。44行目では、execメソッドの実行結果を表示しています。行を1件追加するSQL文を実行したため、「1」が出力されます。

■ データベースのデータを更新する

 「UPDATE」文を使ってデータベースのデータを更新してみましょう。

○ ファイル

 「ExecInsertTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。

ファイルの種類 PHPファイル
ファイル名 ExecUpdateTest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを記述してください。

ExecUpdateTest.php

  1. <html lang="ja">
  2.  <meta charset="utf-8">
  3.  <head>
  4.   <title>UPDATE文実行</title>
  5.  </head>
  6.  <body>
  7. <?php
  8. try{
  9.  //データベースに接続する
  10.  $pdo = new PDO('mysql:host=' . $host . ';dbname=' . $dbname .';charset=utf8;',
  11.   $username,
  12.   $password);
  13.  //SQL文を実行する
  14.  $result = $pdo -> query('SELECT * FROM users WHERE id="004";');
  15.  //データを取得する
  16.  print('更新前*****');
  17.  while($row = $result -> fetchObject('User')){
  18.   var_dump($row);
  19.  }
  20.  //データを更新する
  21.  $ret = $pdo -> exec('UPDATE users SET password="tanapass" WHERE id="004";');
  22.  //更新後のデータを取得する
  23.  $result = $pdo -> query('SELECT * FROM users WHERE id="004";');
  24.  //データを取得する
  25.  print('<hr>更新後*****');
  26.  while($row = $result -> fetchObject('User')){
  27.   var_dump($row);
  28.  }
  29.  print('影響を受けた行数:' . $ret);
  30. }catch(PDOException $e){

○ 実行結果

実行結果
実行結果

○ 解説

 34行目でPDOクラスの「exec」メソッドにUPDATE文を渡してSQL文を実行しています。これによりデータベース上でUPDATE文が実行されます。今回指定したSQL文は、「id」列の値が「004」のデータの「password」列のデータを更新する指定がされているため、その行のデータのみ更新されます。その結果、影響を受けた行数が返り値で取得できるので、変数$retに格納しています。

 25~31行目と37~43行目は、行が更新されたことを確認するために、更新前後でusersテーブルの「id」列の値が「004」の行を、条件を指定して取得しています。実行結果を確認すると、データが更新されていることがわかります。44行目では、execメソッドの実行結果を表示しています。行を1件更新するSQL文を実行したため、「1」が出力されます。

■ データベースのデータを削除する

 「DELETE」文を使ってデータベースのデータを更新してみましょう。

○ ファイル

 「ExecInsertTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。

ファイルの種類 PHPファイル
ファイル名 ExecDeleteTest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを記述してください。

ExecDeleteTest.php

  1.  <head>
  2.   <title>DELETE文実行</title>
  3.  </head>
  4.  <body>
  5. <?php
  6. try{
  7.  //データベースに接続する
  8.  $pdo = new PDO('mysql:host=' . $host . ';dbname=' . $dbname .';charset=utf8;',
  9.   $username,
  10.   $password);
  11.  //SQL文を実行する
  12.  $result = $pdo -> query('SELECT * FROM users;');
  13.  //データを取得する
  14.  print('削除前*****');
  15.  while($row = $result -> fetchObject('User')){
  16.   var_dump($row);
  17.  }
  18.  //データを削除する
  19.  $ret = $pdo -> exec('DELETE FROM users WHERE id="004";');
  20.  //削除後のデータを取得する
  21.  $result = $pdo -> query('SELECT * FROM users;');
  22.  //データを取得する
  23.  print('<hr>削除後*****');
  24.  while($row = $result -> fetchObject('User')){
  25.   var_dump($row);
  26.  }
  27.  print('影響を受けた行数:' . $ret);
  28. }catch(PDOException $e){

○ 実行結果

実行結果
実行結果

○ 解説

 34行目でPDOクラスの「exec」メソッドにDELETE文を渡してSQL文を実行しています。これによりデータベース上でDELETE文が実行されます。今回指定したSQL文は、「id」列の値が「004」のデータを削除する指定がされているため、その行のデータのみ削除されます。その結果、影響を受けた行数が返り値で取得できるので、変数$retに格納しています。

 37~43行目は、行が削除されたことを確認するためにデータを取得しています。実行結果を確認するとデータが1行削除されていることがわかります。44行目では、execメソッドの実行結果を表示しています。行を1件削除するSQL文を実行したため、「1」が出力されます。

前へ   次へ