2

コードは次のとおりです。

Class userinfo {
    function fetchdatabyemail($email) {
        $result=mysql_query(" SELECT * FROM users WHERE email='$email'"); 
        while($row = mysql_fetch_array($result)) {
            $name = $row['name'];
            $num = $row['num'];
            $city = $row['city'];
        }
        $numrows= mysql_num_rows($result);    
    }
}

今私がこれをする情報を得るために:

$info = new userinfo();
$info->fetchdatabyemail('email@email.com');  
echo $info->city; 

そしてそれは情報を返しません。私は何か間違ったことをしていると思います

4

6 に答える 6

5

やれ

public $numrows;
public function fetchDataByEmail($email) {
        $result=mysql_query(" SELECT * FROM users WHERE email='$email'"); 
        while($row = mysql_fetch_assoc($result)) {
        $fetch[] = $row;
        }
        $this->numrows = mysql_num_rows($result);  
        return $fetch;  
}

それから

$info = new userinfo();
$detail = $info->fetchDataByEmail('email@email.com');  
print_r($detail); // return all result array
$info->numrows; // will return number of rows.
于 2012-08-31T05:18:56.007 に答える
2

ローカルで機能する変数。クラスレベルで割り当てる必要があります。コードは次のようになります。

Class userinfo {

public $name,$city,$num,$numrows;

function fetchdatabyemail($email) {
$result=mysql_query(" SELECT * FROM users WHERE email='$email'"); 
while($row = mysql_fetch_array($result)) {
$this->name = $row['name'];
$this->num = $row['num'];
$this->city = $row['city'];
}
$this->numrows= mysql_num_rows($result);

}

次に、これを使用して情報にアクセスします。

$info = new userinfo();
$info->fetchdatabyemail('email@email.com');  
echo $info->city; 

}

于 2012-08-31T05:18:09.443 に答える
1

私はあなたの問題はあなたの変数のスコープ/可視性があなたが関数のスコープの外でそれらを宣言する必要があると思うことだと思います:

http://www.php.net/manual/en/language.oop5.visibility.php

class userinfo {
    public $name;
    public $num;
    public $city;
    public $numrows;
    function fetchdatabyemail($email) {
        $result=mysql_query(" SELECT * FROM users WHERE email='$email'"); 
        while($row = mysql_fetch_array($result)) {
            this->$name = $row['name'];
            this->$num = $row['num'];
            this->$city = $row['city'];
        }
        this->$numrows= mysql_num_rows($result);
    }
}
于 2012-08-31T05:16:23.647 に答える
1

プライベート変数とそのゲッター/セッターが必要です (これが適切な方法です。以下のコードを参照してください)。$city をパブリック変数として宣言し、クラスのインスタンスから直接アクセスすることもできます。

class userinfo
{
    private $city = '';

    public function getCity()
    {
        return $this->city;
    }

    public function fetchDataByEmail($email)
    {
        // Your code here
        $this->city = $row['city'];
    }
}

$info = new userinfo();
$info->fetchDataByEmail('someone@example.com');
echo 'City: '.$this->getCity();
于 2012-08-31T05:19:38.023 に答える
0

最初にクラス変数を宣言する必要があります。

class Userinfo {

    $city;

    // then declare the function

}

あなたのやり方では、 $city のスコープは関数内にのみあり、フィールドとしては保存されませんでした

于 2012-08-31T05:19:10.130 に答える
0

各反復のwhileループは情報を更新しています。だから、あなたはのように反響することができます

function fetchdatabyemail($email) {
    $result=mysql_query(" SELECT * FROM users WHERE email='$email'"); 
    while($row = mysql_fetch_array($result)) {
       echo $row['city'];
    }

または、配列よりもクラスでグローバルに宣言されている配列に値を格納できますecho

あなたのコード$cityでは、クラスからアクセスできないローカル関数スコープで宣言しました$info->city

于 2012-08-31T05:24:32.603 に答える