代码如下:
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;
并且它不会返回信息。我想我做错了任何想法
答案 0 :(得分:4)
做到这一点
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.
答案 1 :(得分: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;
}
答案 2 :(得分: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);
}
}
答案 3 :(得分:1)
你应该有一个私有变量和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();
答案 4 :(得分:0)
您需要先声明类变量。
class Userinfo {
$city;
// then declare the function
}
你这样做的方式,$ city的范围只在函数范围内,而不是存储为字段
答案 5 :(得分:0)
while 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
访问。