我是PHP新手并试图弄清楚如何遍历一个对象 - 实质上是一个查询调用 - 来显示结果。我有以下内容:
这是我班上的功能:
// getDefinitionsByCategoryID
public static function getDefinitionsByCategoryID($categoryID=0) {
return self::find_by_sql("SELECT dictionaryID, dictionaryCategoryID, term, kanji, termEnglishName, shortDefinition, definition FROM dictionary WHERE dictionaryCategoryID = {$categoryID} ORDER BY term");
}
find_by_sql是这样的:
public static function find_by_sql($sql="") {
global $database;
$result_set = $database->query($sql);
// returns an array of objects
return $result_set;
}
以下是页面上创建对象的对象:
$catDefinitions = Dictionary::getDefinitionsByCategoryID($_GET['categoryID']);
以下是我试图使用的循环:
while ($catDefRow = $database->fetch_array($catDefinitions)) {
echo('<li><a href="dictionary.php?definitionID=' . trim($catDefRow["dictionaryID"]) .'">' . trim($catDefRow["term"]) . '</a><br /><div class="smallFont">' . $catDefRow["kanji"] . '</div></li>');
}
很简单,它不起作用。 (公平地说,我一直在使用lynda.com教程来帮助我学习这个。)
我在另一个班级中有另一个功能 - 仅供参考 - 我已成功使用:
public static function getRyuhaByID($ryuhaID=0) {
global $database;
$result_set_ryuha1 = self::find_by_sql("SELECT ryuhaID, ryuhaName, ryuhaKanji, ryuhaEnglishName, isRyuha FROM ryuha WHERE ryuhaID = {$ryuhaID} LIMIT 1");
$found_ryuha1 = $database->fetch_array($result_set_ryuha1);
return $found_ryuha1;
}
显然他们看起来很不一样。但是,我试图弄清楚上面这个例子中的语法是否与我应该遵循的第一个语法相同。似乎当我只期待一个结果时(如上例所示)它工作正常,当我期望在没有传递查询变量的表中的所有结果时,第一个示例工作正常,但是当我期待从db返回的多行&#34;返回self :: ...&#34;语法并传递查询变量,它不起作用。
我希望这一切都有意义;我知道给出的信息越多越好。这已经困扰了我一个星期,所以任何事情都可以帮助我解决这个特定的问题,并且非常感谢有关PHP编程的更多信息。
现在我急于完成这个项目,所以我知道我采用混合方法而不是使用严格的OO原则。