0

間違って発生しているように見えるエラーが発生しています。

私は別のクラスで同じ機能を十分に持っていますが、それは起こらないようです。私が使用している関数は次のとおりです。

public function UserInfo($type, $value) {
    if($type == 'email') {
       $query = $this->db->prepare("SELECT * FROM `accounts` where `provider` = '1' AND `email` = :value AND `type` = 'client' LIMIT 1");
    } else {
       $query = $this->db->prepare("SELECT * FROM `accounts` where `provider` = '2 'AND `prov_id` = :value AND `type` = 'client' LIMIT 1");
    }

    $params = array(":value" => $value,);
    $query->execute($params);
    return $query->FetchObject();
}

そして、次の方法でデータを取得しようとしています:

$clients->UserInfo("id", $uid)->email;

PHPは値を返すため、オブジェクトが実際に存在することは明らかですが、それでもスローされます

PHP Notice: Trying to get property of non-object in /Users/Luke/public_html/manage.php on line 30

使用している構文に問題がありますか、それとも PHP のバグですか?

4

2 に答える 2

-2

PHPはこの行について不平を言っていると思います:

$query->execute($params);

$queryif else 句の外では宣言されていないためです。もう1つの可能性は、1つのクエリが間違っているため、$queryFalseprepare()とおりです。http://php.net/manual/en/pdo.prepare.php

試していただけますか:

public function UserInfo($type, $value) {
    $sql_query = '';
    if($type == 'email') {
       $sql_query = "SELECT * FROM `accounts` where `provider` = '1' AND `email` = :value AND `type` = 'client' LIMIT 1";
    } else {
       $sql_query = "SELECT * FROM `accounts` where `provider` = '2 'AND `prov_id` = :value AND `type` = 'client' LIMIT 1";
    }

    $query = $this->db->prepare($sql_query);
    $params = array(":value" => $value,);

    if ($query === false) return 'False query';

    $query->execute($params);
    return $query->FetchObject();
}
于 2013-07-20T21:31:31.750 に答える