PHPでMySQLを操作する:(3) レコードの更新
PHPからMySQLのデータベースのレコードを更新する方法です。
テーブルは前回と同じ構造です。
PHPからレコードを更新する
PHPコード
<?php
// 定数
define(‘HOST’,’localhost’); // ホスト名
define(‘DBNAME’,’database’); // データベース名
define(‘ID’,’database_id’); // データベースログインID
define(‘PASSWORD’,’database_password’); // データベースログインパスワード
define(‘TBNAME’,’table’); // テーブル名
// MySQLに接続
try{
$sql = new PDO( ‘mysql:host=’.HOST.’; dbname=’.DBNAME.’; charset=utf8′, ID, PASSWORD);
print ‘ 接続に成功しました。’;
} catch ( PDOException $e) {
print “接続に失敗しました。:{$e->getMessage()}”;
}
// レコードの更新
$id = 1; // 更新するレコードのID
$code = 2; // 更新後のコード番号
$name = “新しい名前”; // 更新後の名前
$date = “2018-1-31”; // 更新後の日付
$flag = 0; // 更新後のYes/No型データ
$sql_sentence = ‘UPDATE ‘.TBNAME.’ SET code=:code, name=:name, date=:date, flag=:flag WHERE id=:id’;
$ir -> $sql -> prepare($sql_sentense);
$ir -> bindParam(‘:code’, $code, PDO::PARAM_INT);
$ir -> bindParam(‘:name’, $name, PDO::PARAM_STR);
$ir -> bindParam(‘:date’, $date, PDO::PARAM_STR);
$ir -> bindParam(‘:flag’, $flag, PDO::PARAM_INT);
$ir -> bindParam(‘:id’, $id, PDO::PARAM_INT);
$ir -> execute();
print ‘更新に成功しました。’;
$sql = null;
?>
このコードを実行すると、idが1番のレコードの値を更新します。
今回はSQL文を$sql_sentenseという変数に予め入れておき、それを実行しています。
このSQL文の「UPDATE~SET~WHERE」の大文字は、小文字であっても構いません。
区別がつくように大文字にしています。
なお、bindParamの部分は、以下のように書くこともできます。
$params = array(‘:code’ => $code, ‘:name’ => $name, ‘:date’ => $date, ‘:flag’ => $flag, ‘:id’ => $id);
$ir -> execute($params);
このように書くと、一行にまとめられます。
関連記事