いくつかのパブリック関数とプライベート関数を持つクラス Club{} があります。私が持っている 3 つのプライベート関数は、データベースからデータを取得するために使用されます。次のコードは次のとおりです。
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))
ます。Fatal error: Cannot use object of type Club as array in
私は48番線にも乗ります。echo("<tr><td>" . $row1['FirstName'] . " " . $row1['LastName'] . "</td><td>" . $row1['Email'] .
これのいくつかのバージョンを試しましたが、データを次の関数で機能させることができないようです:
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 テーブルとして正しく表示されます。コードをプライベート関数に分割するとエラーが発生する理由がわかりません。何か案は?
編集:私は、同じクラス内のパブリック関数からこれらのプライベート関数を呼び出しています。