PHPのPDOでMySQLデータベースのデータを更新する(アクセスカウンタ)

前回の続き。詳細ページへのアクセスでアクセスカウンタをアップさせるようにした。この前やったPDOでのデータベース読み取りと同じで、違うのはSQL分くらい。

成果物:index.html -> item.php (トップページの画像クリックで詳細ページに移動)

メモ

  • PDOでデータベースを更新する処理
    try {
    	$dbh = new PDO(DSN, DB_USER, DB_PASS);
    } catch(PDOException $e) {
    	var_dump($e->getMessage());
    	exit;
    }
    
    $id = $_GET['id'];
    $sql = sprintf("update mobile_capture_showcase set counter=counter+1 where id=%d", $id);
    $dbh->query($sql);
    
    $dbh = null;
    

ソースコード
item.php

<html lang="ja">
<head>
	<meta charset="UTF-8">
	<title>スマホキャプチャーギャラリー</title>
</head>
<body>
	<a href="index.php">Home</a> | <a href="upload.html">アップロード</a> | <a href="ranking.html">人気順</a>  | <a href="latest.html">新着順</a>

<?php
	require_once('config.php');

	try {
		$dbh = new PDO(DSN, DB_USER, DB_PASS);
	} catch(PDOException $e) {
		var_dump($e->getMessage());
		exit;
	}

	$id = $_GET['id'];
	$sql = sprintf("update mobile_capture_showcase set counter=counter+1 where id=%d", $id);
	$dbh->query($sql);

	$sql = sprintf("select * from mobile_capture_showcase where id=%d", $id);
	foreach ($dbh->query($sql) as $item) {
		$path = "./images/" . $item['filename'];
		echo sprintf(
			'<table>
				<tr>
				<td>
					<img src="%s" alt="image" width="320" />
				</td>
				<td>
					<table>
						<tr>
							<td>名前:%s</td>
						</tr>
						<tr>
							<td>投稿時刻:%s</td>
						</tr>
						<tr>
							<td>OS:%s</td>
						</tr>
						<tr>
							<td>アクセス数:%s</td>
						</tr>
						<tr>
							<td>コメント:%s</td>
						</tr>
					</table>
				</td>
				</tr>
			</table>',
			$path,
			$item['name'], $item['time'], $item['os'], $item['counter'],
			htmlspecialchars($item['comment'], ENT_QUOTES));
	}

	$dbh = null;
?>
</body>
</html>

参考サイト

パーフェクトPHP (PERFECT SERIES 3)
小川 雄大 柄沢 聡太郎 橋口 誠
技術評論社
売り上げランキング: 24,082

関連エントリー

  1. (PHP/MySQL)ファイル操作、データベース更新メモ
  2. PHPのPDOでMySQLデータベースのデータを取得する2
  3. PHPのPDOでMySQLデータベースのデータを更新する2(投稿内容の変更)
  4. PHPのPDOでMySQLデータベースのデータを取得する
  5. jQuery.ajaxでPHPプログラムに処理要求を出す
This entry was posted in 未分類 and tagged , . Bookmark the permalink.