php类 - 期望

时间:2012-02-16 07:48:35

标签: php mysql

我是php的面向对象编程的新手。我有个问题。我写了一个代码,但这不起作用。我知道这很容易,但我想知道它有什么问题。我收到以下错误:

enter image description here

<?php

class connectDB
{
     $connection;
     $server= "localhost";
     $userName = "root";
     $password = "";
     $select;
     $dbName = "profiles";


     public function connect()
     {
        $connection = mysql_connect($server,$userName,$password);
        $select = mysql_select_db($dbName,$connection);
     }

      public function query()
      {
            $result = mysql_query($query); 
             if (!$result) { 
                 echo 'Bağlantı Hatası: ' . mysql_error(); 
                 exit;  
            }
      }

      public function end() 
      { 
          mysql_free_result($connection); 
      } 
}


?>

当我尝试在另一个文件中使用它时,我现在接受此错误:( enter image description here

4 个答案:

答案 0 :(得分:3)

为什么不使用MySQLi

它简单,强大且随时可用。

答案 1 :(得分:2)

您需要为每个属性声明access modifier,就像使用这些方法一样。只需在变量名称前添加publicprivateprotected之类的内容。

此外,我注意到在尝试访问函数中的类的属性时,你做错了什么。例如:

$connection = mysql_connect($server,$userName,$password);

应该是

$this->connection = mysql_connect($this->server,$this->userName,$this->password);
顺便说一下,大多数人通常只是将服务器,用户名和密码作为构造函数的参数传递,而不是将其放在类中。不是说这是强制性的......

答案 2 :(得分:2)

这应该有用 (类属性必须具有访问修饰符)

无论如何,如果您使用OO,请查看Mysqli(面向对象的lib)以访问MySql数据库。

修改 代码已修复。

class connectDB
{
     private $connection;
     private $server= "localhost";
     private $userName = "root";
     private $password = "";
     private $select;
     private $dbName = "profiles";


     public function connect()
     {
        $this->connection = mysql_connect($this->server,$this->userName,$this->password);
        $this->select = mysql_select_db($this->dbName,$this->connection);
     }

      public function query($query)
      {
            $result = mysql_query($query); 
             if (!$result) { 
                 echo 'Bağlantı Hatası: ' . mysql_error(); 
                 exit;  
            }
      }

      public function end() 
      { 
          mysql_free_result($this->connection); 
      } 
}

// usage
$o = new connectDB();
$o->connect();
$o->query("SELECT * FROM EMPLOYEE");

?>

答案 3 :(得分:1)

一个类不应该做某事(是的,它通过方法做某事),主要那里代表某事 - 现实世界的一个对象。被表示的“事物”是做某事的人。

名称

class connectDB

另有建议。

在尝试“只分组功能”之前,您应该从书中学习一些OOP原则。那不是什么课程。

请参阅:https://stackoverflow.com/questions/249835/book-recommendation-for-learning-good-php-oop

最后,您将拥有课程Connection或课程Database

而且,既然你加入了“OOP俱乐部”,就应该使用PDO。