【问题标题】:Returning multiple database rows from php object class从 php 对象类返回多个数据库行
【发布时间】:2026-02-03 00:35:01
【问题描述】:

我正在尝试在此问题中找到帮助:how can i return multiple database record from a class in OOP programming,但我似乎无法使其正常工作。

我有一个名为“jobs”的数据库表,我想从该表中检索所有数据并将其显示给我的用户。

截至目前,当我使用此代码时:

    /* Get All Jobs */
public function getJobs($page) {

    $db = new DBConnection;
    $str = new str_format;
    $validate = new data_validation;

    $sql = "SELECT * FROM jobs ORDER BY job_id DESC";

    $paginate = new Paginate($db, $sql, $page);
    $result = $paginate->get_results();

    $jobArr = array();

    while($row = $result->fetch_array(MYSQLI_ASSOC)) {

        $row = $validate->escapeArray($row);        

        $job = new Job($db);

        $job->$row['job_id'];
        $job->$row['job_title'];
        $job->$row['date'];
        $job->$row['industry'];
        $job->$row['company'];
        $job->$row['photo'];
        $job->$row['content'];

        $jobArr[] = $job;

        return $jobArr ;

    }//close while loop

    /*===  build the pagination links ===*/
    echo "<div class='pagination_container'>";
    echo "<span class='pagination'>";

    echo $paginate->show_pages();

    echo "</span>";
    echo "</div>";
    /*=== end build pagination links ===*/

} 

我只得到一个条目和一堆看起来像这样的错误Notice: Undefined property: Job::$4 in /home/hirestar/public_html/builder/classes/job.class.php on line 54

这个类被命名为Job,如果这与它有任何关系的话。但我似乎无法正常完成这项工作。

如何通过此函数返回数据库中的所有作业?

【问题讨论】:

    标签: php mysql arrays


    【解决方案1】:

    首先,您在 while 循环中调用 return,因此它将在第一次循环执行时退出。这就是为什么你只得到一个结果。您应该在 while 循环之后调用 return,以便构建整个数组。

    其次,由于此代码,您可能会收到 Undefined property 错误:

    $job->$row['job_id'];
    $job->$row['job_title'];
    $job->$row['date'];
    $job->$row['industry'];
    $job->$row['company'];
    $job->$row['photo'];
    $job->$row['content'];
    

    在这里您可能想要执行以下操作:

    $job->job_id = $row['job_id'];
    

    现在您要做的是从$job 读取属性,其名称等于$row[*] 的值。所以说row_id是4,你本质上是在表演:

    $job->4;
    

    这显然毫无意义。

    【讨论】: