PHP注意:未定义的变量

时间:2013-09-21 16:11:25

标签: php mysql session

我正在尝试将一个加密并关闭的旧脚本恢复生机,但我不是最好的PHP,但是练习会让人感到满意。

我刚刚对其进行了解码并完成了安装过程,并且我收到了PHP Notices Undefined变量。

[21-Sep-2013 17:51:56 Europe/Berlin] PHP Notice:  Undefined variable: dberror in C:\xampp\htdocs\install\step1.php on line 7
[21-Sep-2013 17:51:56 Europe/Berlin] PHP Notice:  Undefined variable: dberror in C:\xampp\htdocs\install\step1.php on line 10


  <?php

     if (isset($setdb)) {
          if (( ( ( $dbhost && $dbuser ) && $dbpass ) && $dbname )) {
              ( @mysql_connect( $dbhost, $dbuser, $dbpass ) || $dberror = 'Can\'t connect to database server' );

               if (!$dberror) {
               ( @mysql_select_db( $dbname ) || $dberror = 'Can\'t select database' );

                     if (!$dberror) {
                         @session_register( 'dbhost' );
                         @session_register( 'dbuser' );
                         @session_register( 'dbpass' );
                         @session_register( 'dbname' );
                         $_SESSION['dbhost'] = $dbhost;
                         $_SESSION['dbuser'] = $dbuser;
                         $_SESSION['dbpass'] = $dbpass;
                         $_SESSION['dbname'] = $dbname;
                         print '<script> window.location=\'index.php?menu=step2\';  </script>';
                      }
                   }
               }
         else {
              $dberror = 'All fields are required';
      }
  }

请问有人告诉我有什么问题。

2 个答案:

答案 0 :(得分:5)

这是因为如果没有发生错误,则永远不会定义$dberror

if (!$dberror) {

应该是:

if (!isset($dberror)) {

OR

将其添加到页面顶部(推荐):

$dberror = false;

答案 1 :(得分:0)

变量$dberror在用于“IF”语句之前未定义。

在检查$dberror之前,该脚本没有关于if(!$dberror)的任何信息。检查变量是否具有任何值而没有被声明或分配之前似乎毫无意义。

如果这是您仍然想要的,您可以检查变量是否完全被声明,然后您可以使用isset检查它是否具有值

if(isset($dberror)){
  if(!$dberror){
  // your stuff
}

}