Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialDan Boswell
2,570 PointsPDO fetchAll not passing correct values to function
This is the challenge I've been set. I'm either doing something wrong or just not understanding the question. Please help.
The company you work for wants to send an email to its member base. They want the email to contain a complementary offer based on their membership level. We've included a helper.php file that contain the connection to the database and give us a PDO object $db to use. This helper file also contains a function to send_offer. The send_offer function accepts the following arguments: $member_id, $email, $fullname, $level In the current file, we've included the query to select the required items from the database. The results of the database query are stored in a PDOStatement object named $results. Loop through those results and pass them to the send_offer function.
<?php
include "helper.php";
try {
$results = $db->query(
"SELECT member_id, email, fullname, level FROM members"
);
} catch (Exception $e) {
echo $e->getMessage();
}
//add code below this line
foreach ($results->fetchAll(PDO::FETCH_ASSOC) as $thing) {
$member_id = $thing['member_id'];
$email = $thing['email'];
$fullname = $thing['fullname'];
$level = $thing['level'];
}
send_offer($member_id, $email, $fullname, $level);
2 Answers
Justin Radcliffe
18,987 PointsHey Dan, you almost have it correct as is - you just need to include the send_offer() function INSIDE the foreach loop. As you have it currently, you're only initializing the function once (for the last array item) rather than for each item in the array.
Dan Boswell
2,570 PointsHi Justin,
Thank you so much. I was bashing my head against a wall trying to figure this out. I can't believe how close I was!
Thanks again!