我有一个Club {}类,它有几个公共函数和私有函数。我有三个私有函数用于从我的数据库获取数据。这是下面的代码:PHP - 在类中调用私有函数显示MySQL数据
private function Get_Members_From_DB()
{
$sql = "SELECT
Email, FirstName, LastName, Gender
FROM
member";
$result = mysqli_query($this->Con, $sql);
$arrayResult = array();
while($row = mysqli_fetch_array($result))
{
$arrayResult[] = $row;
}
return ($arrayResult);
}
private function Get_Members_Interests_From_DB($MemberEmail)
{
$sql = "SELECT
interest_type.InterestDescription
FROM
member, member_interests, interest_type
WHERE
member.Email = '$MemberEmail'
AND
member.Email = member_interests.Email
AND
member_interests.InterestID = interest_type.InterestID";
$result = mysqli_query($this->Con, $sql);
while($row = mysqli_fetch_array($result))
{
$arrayResult[] = $row;
}
return ($arrayResult);
}
private function Get_Interests_Types_From_DB()
{
$sql = "SELECT
InterestID,
InterestDescription
FROM
interest_type";
$result = mysqli_query($this->Con, $sql);
while($row = mysqli_fetch_array($result))
{
$arrayResult[] = $row;
}
return ($arrayResult);
}
当我把这些,我得到警告:mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given
上线406,这是while($row = mysqli_fetch_array($result))
。我也行48这是echo("<tr><td>" . $row1['FirstName'] . " " . $row1['LastName'] . "</td><td>" . $row1['Email'] .
我已经试过这几个版本得到Fatal error: Cannot use object of type Club as array in
,我似乎无法得到的数据进行工作分为以下几个功能:
public function DisplayMembers()
{
//$members[] = array();
$interests[] = array();
$members = new Club();
$members->Get_Members_From_DB();
echo ("<table id='membertable'><tr><td colspan='4'>Informatics Club Members</td></tr>
<tr><td width='130px'>Name</td><td width='170px'>Email</td><td width='60'>Gender</td>
<td width='280px'>Interests</td></tr>");
while($row1 = $members)
{
echo("<tr><td>" . $row1['FirstName'] . " " . $row1['LastName'] . "</td><td>" . $row1['Email'] .
"</td><td>" . $row1['Gender'] . "</td><td><ul>;");
$results2 = new Club;
$results2->Get_Members_Interests_From_DB($row1['Email']);
while($row2 = mysqli_fetch_array($results2))
{
$interests[] = $row2;
echo("<li>" . $row2['InterestDescription'] . "</li>");
}
echo("</ul></td></tr>");
};
echo "</table><br>";
}
我改变了private function Get_Members_From_DB()
到:
$sql = "SELECT
Email, FirstName, LastName, Gender
FROM
member";
$result = mysqli_query($this->Con, $sql); return ($result);
,它仍然没有在DisplayMembers()
功能与出得到的第一个错误我张贴以上,但它会是第46行,这将改变工作:while($row1 = mysqli_fetch_array($members))
如果我拿上面的代码,并直接粘贴到DisplayMembers()
我可以得到正确显示为HTML表格的功能。我不明白为什么当我将代码分离到私有函数时出现错误。有任何想法吗?
编辑:我从SAME类中的一个公共函数调用这些私有函数。
你试过公共函数Get_Interests_Types_From_DB()吗? – Simon 2013-05-01 08:43:53
你没有对你的查询结果做任何事情?你从你的函数中返回它们,但是不要把它们放在任何地方? – 2013-05-01 08:48:19
问题是他想访问一个私有函数,并且这不是由PHP中的可见性授权的。他必须通过公共职能来完成这项工作,或者如果这项工作得到延伸,并且具有受保护的职能。私人总是会返回致命的错误,除非在课堂内使用它。 – Simon 2013-05-01 08:50:10