возвращает значения из класса php oop

код выглядит следующим образом:

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; 

и он не возвращает информацию. Я думаю, что я делаю что-то неправильно

сделай это

 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. 

Ваша переменная работает локально. Вам нужно назначить его на уровне класса. Ваш код должен быть:

 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; 

}

У вас должна быть приватная переменная и getter / setter (это правильный способ, см. Код ниже). Вы также можете объявить $ 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(); 

Я думаю, что ваша проблема заключается в возможности / изменчивости ваших переменных, поэтому вам нужно объявить их вне сферы действия функции:

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); } } 

Вы должны сначала объявить переменные класса.

 class Userinfo { $city; // then declare the function } 

Как вы это делали, область $ city была только внутри функции, а не хранилась как поле

в то время как цикл на каждой итерации обновляет информацию. так что u может эхо в то время как

 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 .