0
for($i=0;$cast_row = mysql_fetch_array($res);$i++)
{
    $cast['id'][] = $cast_row['user_id'];
    $cast['role'][] = $cast_row['role'];
    $cast['role_name'][] = $cast_row['role_name'];
    $cast['is_approved'][] = $cast_row['is_approved'];
    $cast['movie_id'][] = $cast_row['movie_id'];
}
for($i=0;$i<count($cast['id']);$i++) //LINE 31
{
    $output .= "<tr>";
    $mname = getMovieNameById($m_id);
    $output .= "<td><a href='single.php?id=$m_id'>$mname</a></td>";

    $aname = getArtistNameById($cast['id'][$i]);
    $output .= "<td><a href=project.php?id={$cast['id'][$i]}>$aname</a></td>";
}

このコードは Web サーバーでは正常に動作しますが、localhost で実行するとエラー (通知) がスローされます

注意: 未定義のインデックス: 31 行目の C:\wamp\www\Tinyflick\managemovie.php の id

何が問題になる可能性がありますか? コードの残りの部分は問題なく動作するようです

4

4 に答える 4

1

それはちょっとばかげた間違いです..解決しました。nicoさん コメントありがとうございます

localhost のエラー報告レベルは、サーバーのエラー報告レベルとは異なります。それを変更すると、うまくいきます。次のコードは、すべてのエラーと警告を表示します

error_reporting(E_ALL)

警告は通常、運用サーバーでは無効になっています。詳細については、上記の関数のドキュメントを参照してください

于 2012-07-27T05:16:34.017 に答える
0

これらの通知を抑制したい場合は、ループの前に次の行を追加すると思います。

$cast = array('id'=>array(), 'role'=>array(), 'role_name'=>array(), 'is_approved'=>array(), 'movie_id'=>array() );

変数を初期化します。

于 2012-07-22T14:58:02.923 に答える
0

mysqlの結果は空だと思います!:) 返された行の内容をダンプしてみてください。

ところで、次のようなことを行うことでコードを改善できます。

while($row = mysql_fetch_array($res)) { // iterates as long there is content
    //do something with the $row... like your second for block! ;)
}
于 2012-07-22T10:15:23.940 に答える
0

$cast arrayデータベースからデータを適切にフェッチしていないため、空であることがわかります。

サーバーでエラー報告がオフになっている場合、エラーは表示されません。

for ループの代わりに while ループを使用して、データベースから取得したデータを反復処理します。

$cast = array();
while($row = mysql_fetch_array($res)) {
    $cast['id'][] = $row['user_id'];
    $cast['role'][] = $row['role'];
    $cast['role_name'][] = $row['role_name'];
    $cast['is_approved'][] = $row['is_approved'];
    $cast['movie_id'][] = $row['movie_id'];
}

その後、for ループを実行できます。

于 2012-07-22T10:16:24.733 に答える