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 服务器中工作正常,但在本地主机上执行时会抛出错误(注意(
注意:未定义的索引:C:''wamp''www''Tinyflick''managemovie.php 第 31 行中的 id
可能是什么问题?其余代码似乎工作正常
这是一个
愚蠢的错误。它解决了。感谢尼科的评论
本地主机中的错误报告级别与服务器上的错误报告级别不同。改变这一点就可以了。以下代码将显示所有错误和警告
error_reporting(E_ALL)
通常在生产服务器上禁用警告。有关更多信息,请参阅所述函数的文档
我想 MySQL 结果只是空的! :)尝试转储您返回的行的内容。
顺便说一句,你可以通过做这样的事情来即兴创作你的代码:
while($row = mysql_fetch_array($res)) { // iterates as long there is content
//do something with the $row... like your second for block! ;)
}
事实证明$cast array
是空的,因为您没有正确地从数据库中获取数据。
如果在服务器中关闭了错误报告,则不会看到任何错误。
使用 while 循环而不是 for 循环来循环访问从数据库获取的数据。
$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 循环。
我想如果您想取消这些通知,请在循环之前添加以下行:
$cast = array('id'=>array(), 'role'=>array(), 'role_name'=>array(), 'is_approved'=>array(), 'movie_id'=>array() );
以初始化变量。