• 締切済み

bindValueエラー

Fatal error: Call to a member function bindValue() on a non-object in /home/アカウント名/www/index.php on line 487 というエラーが出てしまいました。 PHPバージョンはPHP 5.2.8です。 487行目前後のスクリプトは以下です。 if (!$smarty->is_cached(TEMPLATE_ARTICLE) or $page) { //表示記事番号取得 $stmt = $pdo->prepare('SELECT no FROM ' . DATABASE_TABLE_ARTICLE . ' WHERE stat = 1 ORDER BY date DESC LIMIT :start, :limit'); $stmt->bindValue(':start', intval($configs['_blog']['page_size']) * $page, PDO::PARAM_INT); $stmt->bindValue(':limit', intval($configs['_blog']['page_size']), PDO::PARAM_INT); $flag = $stmt->execute(); if (!$flag) { db_error($stmt->errorInfo()); } DBはsqliteを使っています。 バインドができていないというエラーですが、どのような解決法があるでしょうか?よろしくお願いします。

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.3

>> Fatal error: Call to a member function bindValue() on a non-object PDOのSQLiteドライバで読めないデータベースを使用しているか、データベース名を間違えている。 あるいは、何らかのPHPアクセラレータを使用していて、キャッシュが崩れているということは有りませんか? 前者なら、PDO経由でデータベースを作り直すとか 後者なら、キャッシュを消してみるなど

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

「non-object(メソッドなんか持ってない)なのにメソッドを呼んだ」っていうエラーです。 よって、$stmt にちゃんとobject が入ってないんでしょうね。 $stmt = $pdo->prepare で、エラーがあると、$stmtにはfalseが入るから 次に行く前に if( $stmt !==false ){ で分岐して、実行した方がいいと思うけど。 デバッグのためには、prepared 文がどうなっているかを出力してみたり、sqliteがどういうエラーを出しているか、PDO->errorInfo() を調べて下さい。

  • mizutaki
  • ベストアンサー率33% (111/333)
回答No.1

bindValue()関数のnon-objectじゃないのですか? その関数はちゃんと参照出来ているのでしょうか? 後487行目のエラーという事は その以前にエラーになっている理由が存在している可能性が高いと言えますけど