код выглядит следующим образом:
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
.