2011-07-11 123 views
0

未定义的变量我可以非常简化到一个error.php文件:Zend公司:在PHP页面

<? 

    if (!isset($error)) 
    $error = "Unspecified Error"; 

    echo "Error: $error"; 

?> 

不是“正常使用”,只是导航到error.php。相反,我会做这样的事情:

$dbh = mysql_connect($host, $user, $pass); 

if (!$dbh) 
{ 
    $error = "Can't connect to MySQL: " . mysql_error(); 
    include('error.php'); 
    exit(); 
} 

也就是说,如果用户不导航到error.php那么他们只会得到“错误:未指定的错误”预期。

我所有的代码都正常工作,错误页面显示并且与预期完全一致,但是Zend抱怨$ error在行上是undefined:if (!isset($error))

我意识到我的设计模式太糟糕了,但在这种情况下,我只是把一些快速而肮脏的东西扔在一起。

+0

这是不确定的,但是,这不是什么'isset()函数'是真的吗? – alex

+0

@alex嗯,是的......我想是的。我没有问,因为我的代码不工作;我在问,因为Zend给我警告。目前我只是无视他们,因为他们不是一个真正的问题。 – Ozzah

回答

1

更好的主意,创建一个函数:

function output_error($error = NULL) 
{ 
    if(!$error) $error = "Unspecified Error"; 
    echo "Error: $error"; 
} 

它既有消除了Zend问题的利益,和你有一个MUCH更好的设计。然后:

if (!$dbh) 
{ 
    include('error.php'); 
    output_error("Can't connect to MySQL: " . mysql_error()); 
    exit(); 
} 
+0

即使我的_actual_ error.php(不是我作为例子中简化的那个)输出一个完整的html错误页面,头部,样式表和JavaScript?顺便说一下,我们还有 – Ozzah

+0

+1。我认为这是目前唯一正确的答案。 – Ozzah

+0

在页面的<?php函数output_errors($ err){?>'在底部'<?php}' – cwallenpoole

-2

试试这个: if (!isset(@$error))

+1

抑制错误绝不是一个好主意。 -1。 –

0
$dbh = mysql_connect($host, $user, $pass); 

if (!$dbh){ 
    $error = "Can't connect to MySQL: " . mysql_error(); 
    if(!include('error.php'){ 
     echo $error; 
     exit(); 
    } 
}