我的網站頁面之一有一個 PHP 文件,其中包含我的所有 HTML 和 PHP 代碼。我在網站上有一個表,我想用 SQL 表中的數據填充它。我目前將所有代碼(HTML、Javascript、SQL、PHP)放在一個名為“modules.php”的文件中。這是我必須填充表的代碼:<?php // Shows all the modules in the table $module_sql = "SELECT *, course.course_name FROM module INNER JOIN course on module.course = course.course_id"; $module_qry = mysqli_query($link, $module_sql); while ($module = mysqli_fetch_array($module_qry)) { ?> <tr> <td><?php echo $module['module_name']; ?></td> <td><?php echo $module['course_name']; ?></td> <td><?php echo $module['perc_worth']; ?></td> <td><?php echo $module['credit']; ?></td> <td><?php echo $module['uni_year']; ?></td> </tr> <?php } ?>當所有內容都在一個文件中時,這一點非常有效。它獲取數據庫中的所有行,迭代它們并將結果打印在表中,直到沒有剩余。現在我正在創建一個類文件“queries.php”,它將在單獨的函數中包含我的所有 SQL 代碼。我將從“module.php”文件中調用每個函數。到目前為止,當我只需要執行查詢或從數據庫返回單行時,這非常有效,但是當我必須從數據庫返回多行時,我遇到了問題。這是到目前為止我已經實現的代碼:查詢.php function executeGetQry($qry) { $execute = mysqli_query($this->databaseConnect(), $qry) or die(mysqli_error( $this->databaseConnect())); if ($execute == null) { return null; } else { return mysqli_fetch_array($execute); } } function getAllModules() { $module_sql = "SELECT *, course.course_name FROM module INNER JOIN course on module.course = course.course_id"; return $this->executeGetQry($module_sql); }然而,這是行不通的,因為每次執行“while”循環時,它只是再次運行該函數并一遍又一遍地返回同一行,并且從不迭代并返回其他行。問題:如何修復我的函數,以便它能夠將所有行和return每行作為數組進行迭代,以便我可以成功地將所有 SQL 放入不同的文件中并獲得相同的結果?我有多個 SQL 查詢,需要迭代結果,所以我認為我需要修復我的executeGetQuery函數。
1 回答

狐的傳說
TA貢獻1804條經驗 獲得超3個贊
由于mysqli_fetch_array()每次調用僅返回一行,因此它不能作為getAllModules().
你可以有getAllModules()return $execute,那么你的 PHP 代碼將是:
<?php
$execute = $query->getAllModules();
while ($module = mysqli_fetch_array($execute)) { ?>
<!-- your table row -->
<?php } ?>
- 1 回答
- 0 關注
- 146 瀏覽
添加回答
舉報
0/150
提交
取消