にほ録

作業記録です。

SQLite Database Browserの謎

2009-06-23 15:50:13 | Weblog
SQLite Database Browser(v1.3)でテーブルの編集をしてる。
GUIからUNIQUE属性なカラムを作る方法がわからん。
しょうがないんで、Execute queryのタブでSQLを直に入力。

CREATE TABLE users (password TEXT, user TEXT UNIQUE)

これでできたっぽいんだが、Modify Table→Rename Tableでテーブル名を変えたらUNIQUE属性が消える。
何度やっても。
なんで?
酔ってるせいか?

PDOのfetch()の仕様がよくわからん

2009-06-14 15:36:55 | Weblog
http://code.google.com/p/umlite/
こんなコードを書いた。
  try {
    $dbh = new PDO('sqlite:./uml.db', null, null);
    $sql = 'SELECT password FROM users WHERE user = ' . $u;
    $r = $dbh->query($sql)->fetch();
    $dbh = null;
  } catch (Exception $e) {
    あれこれ
  }
DBアクセスに失敗したらExceptionを拾うつもり。

ところが、実際にDBアクセスに失敗させてみるとfetch()でFatal Errorになりやがる。
何でだろう?

よくわからんので、fetchの前にこんなコードを入れた。
    if(!is_object($r = $dbh->query($sql))) {
      throw(new Exception('DB'));
    }
これで期待通りの動作になったんだが、そんならtry-catch使わずに、単にis_objectで判定すりゃいいよな。

ああ、酔いが醒めた。

php_pdo_sqlite.dll

2009-06-06 16:10:09 | Weblog
前回から、ユーザ管理のライブラリをいくつか調べてみたが、どれもいまいちなので、結局、Micro Login Systemを参考にして自分で作ろうと思う。
とりあえず、SQLiteの使い方の勉強から。
「php sqlite」とかでぐぐってると、SQLite2とSQLite3の情報が混ざって、えらく混乱する。
っていうか、オフィシャルのPHPマニュアルが、SQLiteについてはわかりにくい、俺には。
SQLite2のほうがプログラムは簡単そうなんだが、SQLite Database BrowserがSQLite3にしか対応してないので、SQLite3を選択した。
で、やっとできた、データベースのオープン。php_pdo_sqlite.dll(SQLite3)用。
<code>
try {
  $dbh = new PDO('sqlite:./lum.db', null, null);
  $sql = 'SELECT uid FROM lum_misc';
  foreach($dbh->query($sql) as $row) {
    print $row['uid'];
  }
} catch (PDOException $e1) {
  die("データベースに接続できませんでした");
}
$dbh = null;
</code>

Micro Login System - File based

2009-06-04 05:55:23 | Weblog
Micro Login System - File basedを入れてみた。

ドキュメントが全く無い。
サンプルを見て考えろ、いや考えるな、感じろ。
というわけで、各ファイルの頭にこれを書くだけと感じた。
<?php
require_once('common.php');
checkUser();
?>

管理者用画面も無い。
ユーザを消すには、ファイルから消せってことか。

シンプルなのがいいんだが、管理者用画面とForgot Passwordの機能は欲しいな。
別の探そ。