SQLiteを使ったアクセスカウンタ

例1

あなたは 15868 人目のお客様です。

上のソース:

<?php
  try {
    $db = new PDO("sqlite:ファイル名");
    $r = $db->exec("update counter set cnt=cnt+1;");
    if ($r != 1) {
      $db->exec("create table counter(cnt int);");
      $db->exec("insert into counter values(1);");
    }
    $a = $db->query("select cnt from counter;")->fetchAll();
    $db = null;
  } catch (PDOException $e) {
    echo "<p>エラー:", $e->getMessage(), "</p>";
  }
?>

<p>あなたは <?php echo $a[0][0]; ?> 人目のお客様です。</p>

この「ファイル名」は,データベースファイルのファイル名で,通常は絶対パスで指定しますが,PHPファイルのある場所からの相対パスでもかまいません。

上の実習を始める前に,データベースファイルを入れるためのフォルダを作っておきます。public_htmlの中でもかまいませんが,セキュリティに配慮して,ホームディレクトリ直下あたりに作っておきましょう。このフォルダは Apache プロセスがアクセスできるようなパーミッションにしておきます。データベースファイルは最初にアクセスカウンタが使われたときに作成されます。

データベースファイルだけでなく,その入ったフォルダも,Apache がアクセスできるようにする必要があります。これは,データベース更新(insertやupdate)時に,データベースファイルと同じフォルダに一時ファイルを作るために必要なようです。


奥村晴彦

Last modified: 2010-08-01 21:41:32