MDB2 Error: not found が出た時に確認したい事項まとめ

1. ドライバのインストールが済んでいるかどうか

簡単な select * from table とかを試してみてもこのエラーが出る場合は、使用するDBのドライバが入っていない可能性が高いのでインストール。
mysqlなら pear install MDB2_Driver_mysql を実行。

2. プレースホルダのパラメータと値の数があっているかどうか

プレースホルダを使ったときにこのエラーがでた場合、パラメータ「?」の数とセットする値の数が違っていないかチェック。
例えば↓こんなことになっていないかなど。
ダメな例)

$row = array(1, 2); #=>セットしてる値は2つ
$sth = $mdb2->prepare('INSERT INTO table VALUES (?, ?, ?)'); #=>パラメータは3つ
$sth->execute($row);

OKな例)

$row = array(1, 2, 3);
$sth = $mdb2->prepare('INSERT INTO table VALUES (?, ?, ?)');
$sth->execute($row);
3. プレースホルダのパラメータをシングルクォートで囲ってたりしないか

今しがたしたミスだったのでメモ…。シングルクォートはいらないです。
ダメな例)

$sth = $mdb2->prepare("INSERT INTO table VALUES ('?', '?', '?')"); #=>「?」は囲まないで!!

OKな例)

$sth = $mdb2->prepare("INSERT INTO table VALUES (?, ?, ?)");