2012-03-17 9 views
1

<というスコアを持つすべてのcourse_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()); 
+0

'query8'は40なぜ' if'テストよりも少ない点数でコースを返す必要がありますか? – afaolek

答えて

2

あなた$ 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配列内の配列を追加することは、値を最初の配列に直接追加するだけでよい場合は不要です。

第二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 
+0

助けてくれてありがとう。しかし、あなたが見つけたエラーを実装した後、私はまだ同じ結果を得ています。ありがとう –

+0

@dotunoyesanmi - $ query8をwhile()関数の前に移動した後、ちょうど上に投稿したコードでコードを置き換えてください。 – Tom

+0

更新をありがとうございました。あなたのコードを更新し、print_r($ carry_over)も追加しました。それは返す...... Array()。それはクエリが空であることを意味しますか? しかし、mysql_num_rows()で$ query8を使用したとき、私は2を得ました。それは私が期待したものです。どこでエラーが発生する可能性がありますか。 ありがとう –

1

アレイループが IF($ row8 [ 'スコア'] < 40) $ carry_over [] = $ row8 [ 'course_code']であるべきです。

+0

助けてくれてありがとう!私は同じ結果を得ています。 –

+0

score <40かどうかを調べて、if文でif文をデバッグするecho sth ...何もクエリにスコアがないことを意味しない場合<40 ....スコアが40未満の場合は構文が正しく動作する –

+0

mysql_num_rows($ query8)、それは2を返し、それは正しいです。 –

0

まず、$row8の配列をデバッグする必要があるかもしれないと思います。内部にあるか、それはおそらく、すべての

+0

var_dump($ row8)はブールfalseを返しました –

+0

はい、それはすべての答えです。あなたは最初の結果が得られません。 – Rezigned

+0

私はmysql_num_rows ($ query8)を実行して2を返し、その が正しいです。 - –