与php函数混淆导致不同服务器上的错误

时间:2013-07-22 11:00:46

标签: php html5 scope

我有问题,我不知道如何解决,这是我的PHP脚本的快照。

    foreach($result as $row){
            $Admin [] = array('id'=>$row['id'],'username' => $row['username'], 'email' => $row['email'], 'password'=>$row['password']);
        }

        include 'view_admins.php';

这是view_admins.php的一部分,与我的问题相关

    <article id="admins">//html tag
    <?php 

    foreach($Admin as $admins)://this is line 75

    ?>

        <form action="" method="post" >
            <div>
            <p><tr><td><p><?php htmlout($admins['username']); ?></p></td><td>
            <input type="hidden" align="center" name="id" value="<?php echo $admins['id'];?>"></td><td>

            <input type="submit" name="action" value="edit">
            <input type="submit" name="action" value="delete"></p></td></tr>

            </div>
        </form>
        <?php endforeach; ?>
        </article>

当此代码运行时,它会生成“Warning: Invalid argument supplied for foreach() in /home/a2516093/public_html/connect/view_admins.php on line 75

我的困惑是这个代码在我的本地主机上运行完全正常然而当上传到我的主机它产生上面提到的警告,有人可以请告诉我是什么原因可能导致问题,我仍然学习PHP编程所以任何帮助将是高度赞赏。

据我所知$Admin应该在view_admins.php中显示,如果我错了,请纠正我。谢谢

2 个答案:

答案 0 :(得分:1)

我猜你正试图foreach()mysql_query()获得直接结果。

你不能这样做。您需要使用mysql_fetch_array()mysql_fetch_assoc();来定义行。

一个例子:

$result = mysql_query("Your query");
while($row = mysql_fetch_array($result)) {
     $Admin [] = array('id'=>$row['id'],'username' => $row['username'], 'email' => $row['email'], 'password'=>$row['password']);
}

您之前的代码工作原因可能是因为某些自动配置设置修复了无效代码。也可以是一个MySQL插件,可以自动获取正确的属性,而您通常必须手动执行此操作。

答案 1 :(得分:0)

我认为问题出在您的第一行foreach($result as $row){数据可能不会到达那里。

print_r($result);之前只需foreach($result as $row){,并且可以看到有任何数据。

在foreach:

之前删除错误检查
<article id="admins">//html tag
<?php 
if(!empty($Admin)){
foreach($Admin as $admins)://this is line 75

?>

    <form action="" method="post" >
        <div>
        <p><tr><td><p><?php htmlout($admins['username']); ?></p></td><td>
        <input type="hidden" align="center" name="id" value="<?php echo $admins['id'];?>"></td><td>

        <input type="submit" name="action" value="edit">
        <input type="submit" name="action" value="delete"></p></td></tr>

        </div>
    </form>
    <?php endforeach; 
    }
    else{ echo "No data found !";}
    ?>
    </article>