PHP データベース関連

[PHP] MySQLのレコードをUPDATEする

2015年9月21日

MySQLのレコードをUPDATEするサンプルです。

サンプルソース

以下のようなテーブルを更新してみます。

【testテーブル】
項目名 制約
ID INT(3) PK
VAL1 VARCHAR(50)
VAL2 VARCHAR(50)

例)MySQLをUPDATEする


<?php
 try {
   //DBコネクションを取得する
   $dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8';
   $dbid = 'root';
   $dbpw = 'pass';
   $conn = new PDO($dsn, $dbid, $dbpw,
           array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

   //トランザクションを開始する
   $conn->beginTransaction();

   //パラメータ値
   $id = "999";
   $val1 = "ZZZZ";

   //UPDATE処理
   $sql = "UPDATE test SET VAL1 = :val1 WHERE ID = :id";
   $stmt = $conn->prepare($sql);
   $stmt->bindParam(':id', $id, PDO::PARAM_STR);
   $stmt->bindValue(':val1', $val1, PDO::PARAM_STR);
   $stmt->execute();

   //更新件数を取得して表示する
   $updateCount = $stmt->rowCount();
   print "更新件数 -> ".$updateCount;

   //コミット
   $conn->commit();

 }catch(ErrorException $ex){
   echo($ex->getMessage());

 }catch(PDOException $ex){
   echo($ex->getMessage());

 }

備考

  • bindValueに指定する値は変数である必要があります。
    (例えば、上記20行目の$idを”AAA”みたいな固定値指定するのはダメです。)

関連記事

-PHP, データベース関連
-