user1183013
user1183013

Reputation:

retrieving values into an array

I'm trying to enter all the course_code that have a score < 40 into array and echo it out somewhere. The print_r($carry_over) returns nothing!

$carry_over = array(); 

while ($row8 = mysql_fetch_assoc($query8)) {

   if ($row8['score'] < 40) {
        $carry_over[] = array('m.course_code' =>$row8['course_code']);
   } 
}

print_r($carry_over);

$query8 = mysql_query("SELECT  m.score , m.course_code FROM maintable AS m  
                       INNER JOIN students AS s ON m.matric_no = s.matric_no
                       INNER JOIN courses AS c ON m.course_code = c.course_code
                       WHERE m.matric_no = '".$matric_no."'
                       AND m.level = '".$level."'
                       AND m.score < 40"
                      ) or die (mysql_error());

Upvotes: 1

Views: 100

Answers (3)

Tom
Tom

Reputation: 3520

Your $query8 variable (the database query) should be defined before the while() function. Right now, the while() function iterates over 0 rows which, of course, results in an empty array.

$carry_over = array(); 

while ($row8 = mysql_fetch_array($query8))
{
    $carry_over[] = $row8['course_code'];
}

Since you already check for rows where the score is less than 40 in your SELECT query, the check inside the while() function is redundant. You also missed a single-quote in front of course_code (it was previously a dot), and finally; adding an array inside the $carry_over array is unnecessary when you can just add the value directly to the first array.

2nd UPDATE

$matric_no = MAKE_SURE_TO_DEFINE_THIS;
$level = MAKE_SURE_TO_DEFINE_THIS;

// Fetch rows
$query8 = mysql_query("SELECT maintable.score, maintable.course_code, maintable.matric_no, maintable.level, students.matric_no, courses.course_code FROM maintable, students, courses WHERE (maintable.matric_no = '" . $matric_no . "' AND maintable.matric_no = students.matric_no) AND (maintable.course_code = courses.course_code) AND (maintable.level = '" . $level . "')");

$carry_over = array();

while ($row8 = mysql_fetch_array($query8))
{
    // Save data to array
    $carry_over[] = $row8['course_code'];
}

echo 'We found ' . mysql_num_rows($query8) . ' rows';

print_r($carry_over); // DEBUG

Upvotes: 2

Rezigned
Rezigned

Reputation: 4932

I think you might have to debug $row8 array first. to see what is inside or it probably got nothing at all

Upvotes: 0

Hieu Van Mach
Hieu Van Mach

Reputation: 683

The array loop should be If($row8['score'] < 40) $carry_over[] = $row8['course_code'];

Upvotes: 1

Related Questions