2017-08-06 17 views
0

PHP関数から返された配列を使ってどのように反復処理を行い、レコードセットのすべてのレコードを取得しますか?クエリに一致するデータベースから行からすべてのレコードを印刷するには、以下のコードを使用しようとするすべての行関数によって配列として返されたときにレコードセットを反復する

// @param group_id @returns result rows of all post from group with the corresponding ID 

     function getGroupPostItem($group_id){ 

     $sql_query = mysql_query("SELECT * FROM posts WHERE gid = '$group_id'"); 
    while($rows = mysql_fetch_assoc($sql_query)) { 



$record_set = array('gid' => $rows['gid'], 
        'pid' => $rows['pid'], 
        'post' => $rows['post'], 
        'filemap_id' => $rows['filemap_id']); 


return $record_set; 



     } 
      } 

を含む配列を返すために、コードのこの部分を取得しよう

が、すべてのそれは1行しか印刷しません。これに

$record_set = array('gid' => $rows['gid'], 

...:

$arr = getGroupPostItem('6'); 
echo $arr['post']. '<br/>' ; 

答えて

0

あなただけのこの行を変更することができるはず

$record_set[] = array('gid' => $rows['gid'], 

EDIT:また、ポール・Tによるコメントで述べたように、 return $record_set;はループwhileの外側にある必要があります。

注:現在echo $arr['post'] . '<br/>';は、配列になっているため、単独の値は表示されません。代わりに、forループまたはforeachループを通過する必要があります。例:

foreach ($arr as $val) { 
    echo $val['post'] . '<br/>'; 
} 

...または:

for ($i = 0; $i < count($arr); $i++) { 
    // Optional, if you want the loop to stop at the 0th value 
    if ($i == 0) { 
    echo $arr[$i]['post'] . '<br/>'; 
    } 
} 
+1

...と 'ますreturn $ record_set;' whileループの外にすべきですか? –

+0

これを試してみましたが、動作していません – Maxwell

+0

は未定義のインデックスエラーをスローし続けます! – Maxwell

関連する問題