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

我猜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 回答
0

我想如果你想抑制这些通知,请在循环之前添加以下行:

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

初始化变量。

于 2012-07-22T14:58:02.923 回答