1

関数を使用して、mysql データベースから複数の行を取得しています。foreach を使用して、各一致をループします。各行のIDを配列に追加し、その配列を呼び出し元のプログラムに戻してIDを使用できるようにしたいと考えています。

これは私が取得しようとした限りですが、正しい方向に進んでいますか?

$resultarray = array();
    $resultarray[] = get_post_data($post_id);

    print_r($resultarray);

関数内のコード:

$stmt = $dbh->prepare("SELECT * FROM mjbox_images JOIN mjbox_posts USING (post_id) WHERE post_id = ?");
        $stmt->bindParam(1,$post_id);
        $stmt->execute();

        $resultarray = array();
        foreach($stmt as $row):


                $resultarray[] = $img_id = $row['img_id'];


        endforeach;
        return $resultarray;

ありがとう

4

2 に答える 2

1

フィールドが必要なだけならimg_id、なぜ実行しているのselect *ですか?

$stmt = $dbh->prepare("SELECT img_id FROM mjbox_images JOIN mjbox_posts USING (post_id) WHERE post_id = ?");
$stmt->bindParam(1,$post_id);
$stmt->execute();

return $stmt->fetchAll();

または、次のコマンドを使用して、結果を手動でループすることもできます(戻り配列の構文を検証/変更するため)。

while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    //code
}
于 2012-06-05T17:09:13.467 に答える
1

以下を使用する必要があります。

while($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {

}

for ループの代わりに。また、ループなどには { と } を使用することを強くお勧めします :)

于 2012-06-05T17:04:39.907 に答える