Harinder
Harinder

Reputation: 1257

Foreach and DISTINCT with function PHP mysql

I'm trying to use function with foreach but getting error. Here is my code:

function student_image_list(){
    global $host, $dbname, $user, $pass;
    $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
    $STH = $DBH->query("SELECT DISTINCT folder_name from school_students_images");
    $STH->setFetchMode(PDO::FETCH_ASSOC);
    $row = $STH->fetch();
    return $row;
}

I want to print all unique folder names from the table school_students_images, and I'm trying this:

$folder_name1 = student_image_list();
foreach($folder_name1['folder_name'] as $folder_name)  
    { 
        echo ' <div class="mws-panel grid_2">
               <div class="mws-panel-header">
               <span>'.$folder_name.'</span>
               </div>                            
               </div>';
    }

Error Warning: Invalid argument supplied for foreach() in student_image_list_raw.php on line 41 error in this line

foreach($folder_name1['folder_name'] as $folder_name)  

please help.

Upvotes: 0

Views: 2318

Answers (1)

Sergey
Sergey

Reputation: 5207

You fetch only one row and seem is not a have a 'folder_name' key, you have to

function student_image_list(){
    global $host, $dbname, $user, $pass;
    $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
    $STH = $DBH->query("SELECT DISTINCT folder_name from school_students_images");
    $STH->setFetchMode(PDO::FETCH_ASSOC);
    return $STH;
}

$STH = student_image_list();
while (($row = $STH->fetch()) !== false) {
    echo ' <div class="mws-panel grid_2">
           <div class="mws-panel-header">
           <span>'.$row['folder_name'].'</span>
           </div>                            
           </div>';

}

Upvotes: 1

Related Questions