извлечение значений в массив - PullRequest
1 голос
/ 17 марта 2012

Я пытаюсь ввести весь курс_кода, который имеет оценку <40, в массив и вывести его куда-нибудь. <code>print_r($carry_over) ничего не возвращает!

$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());

Ответы [ 3 ]

2 голосов
/ 17 марта 2012

Ваша переменная $ query8 (запрос к базе данных) должна быть определена перед функцией while(). Прямо сейчас, функция while() выполняет итерацию по 0 строкам, что, конечно, приводит к пустому массиву.

$carry_over = array(); 

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

Поскольку в запросе SELECT вы уже проверяете строки, в которых оценка меньше 40, проверка внутри функции while() является избыточной. Вы также пропустили одиночную кавычку перед course_code (раньше это была точка) и, наконец,; добавление массива в массив $ carry_over не требуется, если вы можете просто добавить значение непосредственно в первый массив.

2-е ОБНОВЛЕНИЕ

$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
1 голос
/ 17 марта 2012

Цикл массива должен быть Если ($ row8 ['score'] <40) $ carry_over [] = $ row8 ['код_курса']; </p>

0 голосов
/ 17 марта 2012

Я думаю, вам, возможно, придется сначала отладить массив $row8.чтобы увидеть, что внутри, или, вероятно, вообще ничего не получилось

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...