0

下面是我的课。图一

<?php 

class qcon{
     public static $conn;

function dbcon()
{


     if (!$conn) 
     {
         $host = 'x';
         $username = 'x';
         $password = 'x';
         $dbname = 'x';
         $conn = mysqli_connect($host , $username  , $password ,$dbname);
     }

     return $conn;
}
}


?>

这里称为。图B

require_once(class file above);
   function openSesame() 
{
$boogey = new qcon();
$conn = $boogey->dbcon();


if (!$conn)
{
    $this->error_msg = "connection error could not connect to the database:! ";  
    return false;
}
$this->conn = $conn;
return true;
}

正在引起

Notice: Undefined variable: conn in C:\...\xxxx\figAclass.php on line 10

我知道我可以简单地关闭错误,但这似乎不明智。我看了一个关于未定义变量通知的通用 SO 问题。显然,建议是一般性的 - 使用 isset。在isset试了一下,这对于我想要做的事情似乎不正确。

根据图 A 和 B 中的代码,是否有任何明显的原因导致通知被标记。您能否演示与所示现有代码一致的修复程序。

4

4 回答 4

1

不要使用if (!$conn),它将检查变量是否为真/假或包含一个值,而不是它是否已定义。改用这个:

if(empty($conn))

这将检查变量是否已定义,以及它是否为 NULL/空。

您还想在您的类中使用 $this->conn ,因为您将它定义为类的变量。

于 2013-08-21T20:44:08.527 回答
1

就像我在上面的评论中所说的那样,既然你有一个 static $conn,你需要像这样引用它:

public function dbconn()
{
    if (!self::$conn) {
        // blah
    }

    return self::$conn;
}

您的错误正在发生,因为您试图引用一个名为 的变量$conn,但由于范围,不存在这样的事情。

于 2013-08-21T20:48:09.927 回答
1

当你访问它时,你应该使用 $this->conn,例如:

if(!$this->conn){...}

编辑阅读问题太快了,对不起

于 2013-08-21T20:45:59.413 回答
0

你不能使用if (!$conn)它,因为它只会返回“true”或“false”。

利用:

if empty($conn)反而。

于 2013-08-21T20:52:36.320 回答