0

私はPDOを学んでいるので、ご容赦ください。とにかく、エラーが発生し続けます:

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

コードは以下のとおりですが、私は何か間違っていますか? 関数自体は、次のように別のファイルで呼び出されています。

$result = $database->confirmIPAddress($this->ip);

機能コード:

function confirmIPAddress($value) {
    $stmt = $db->prepare("SELECT attempts, (CASE when lastlogin is not NULL and DATE_ADD(LastLogin, INTERVAL `.TIME_PERIOD.` MINUTE)>NOW() then 1 else 0 end) as Denied `.
    ` FROM `.TBL_ATTEMPTS.` WHERE ip = :ip");
    $stmt->execute(array(':ip' => $value));
    $data = $stmt->fetch(PDO::FETCH_ASSOC);

    //Verify that at least one login attempt is in database
   if (!$data) {
     return 0;
   } 
   if ($data["attempts"] >= ATTEMPTS_NUMBER)
   {
      if($data["Denied"] == 1)
      {
         return 1;
      }
     else
     {
        $this->clearLoginAttempts($value);
        return 0;
     }
   }
   return 0;  
  }
4

2 に答える 2

2

これは変数のスコープの問題であり、特に PDO とは関係ありません。関数では、変数を使用します$db。これは、スクリプトのメイン コードで設定したグローバル変数だと思います。関数を呼び出す前に。PHP では、グローバル変数は関数内で自動的に表示されません。変数をパラメーターとして渡すか、global宣言を使用する必要があります。

function confirmIPAddress($value) {
    global $db;
    $stmt = $db->prepare(...);
    ...
}
于 2013-08-16T00:28:37.593 に答える