-2

私は自分の SignUp クラスに取り組んでいますが、PDO 呼び出しに問題があるようです。ブラウザーはこれを返します。

致命的なエラー: オブジェクト以外でのメンバー関数 query() の呼び出し

メインページに含まれるファイルにデータベース構成があります。それは次のとおりです。

   <?
   $dsn = 'mysql:dbname=magazin-online;host=localhost;';
   $username = 'root';
   $password = '';

   try{
       $pdo = new PDO($dsn, $username, $password);
   }catch(PDOException $e){
       echo 'Connection failed!: '.$e->getMessage();
   }

エラーの原因となっている SignUp クラスの行は次のとおりです。

   $pdo->query("insert into ... () ... values ());

今、私はサインアップクラスでデータベース接続を作成しません。これは、それを担当するファイルが既に含まれているためです。

どうすればそのエラーを取り除くことができますか?

4

3 に答える 3

-1

新しい PDO によって生成された例外をキャッチし、実行を続行します。

このようにすると、クラスが存在することを確認する必要があるため、次のように変更します。

if( $pdo) 
  $pdo->query("insert into ... () ... values ());

しかし..より良い方法は、このような重大なエラーの後に実行を継続しないことです. したがって、次のように接続を変更することをお勧めします。

   $dsn = 'mysql:dbname=magazin-online;host=localhost;';
   $username = 'root';
   $password = '';

   try{
       $pdo = new PDO($dsn, $username, $password);
   }catch(PDOException $e){
       echo 'Connection failed!: '.$e->getMessage();
       die;
   }
于 2012-09-20T14:58:01.213 に答える
-1

私の理解が正しければ、 $pdo はグローバル変数です。関数内で $pdo->query を呼び出す場合は、$pdo 接続をパラメーターとして渡すか、グローバルとして宣言する必要があります。

global $pdo;

メンバー関数の先頭。

于 2012-09-20T14:58:26.273 に答える
-1

execの代わりに使用してみてくださいquery:

$pdo->exec("insert into ... () ... values ());
于 2012-09-20T14:59:46.320 に答える