0

私はこの質問で見つかったヘルプに従おうとしています:OOPプログラミングのクラスから複数のデータベースレコードを返すにはどうすればよいですか?しかし、それを正しく機能させることができないようです。

'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 ===*/

} 

エントリが1つだけで、次のようなエラーがたくさん表示されますNotice: Undefined property: Job::$4 in /home/hirestar/public_html/builder/classes/job.class.php on line 54

クラスはJob、それがそれと関係がある場合に名前が付けられます。しかし、私はこの仕事を適切に行うことができないようです。

この関数からデータベース内のすべてのジョブを返すにはどうすればよいですか?

4

1 に答える 1

2

returnまず、whileループ内で呼び出しているので、最初のループ実行でベイルアウトします。これが、1つの結果しか得られない理由です。配列全体を構築できるように、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_id4であるとすると、本質的に次のように実行されます。

$job->4;

これは明らかに無意味です。

于 2013-02-26T21:11:01.540 に答える