PHP类错误 - noob

时间:2012-02-16 17:23:09

标签: php mysql sql

我是一个PHP菜鸟。我试图将一个数据库连接文件放入一个类(它需要是私有的,静态的还是什么?)。 Netbeans现在抛出错误,当我尝试从浏览器运行它时,我得到500内部服务器错误。我想我错过了一些简单的事情!感谢

<?php
class config{

//define server, username, password and database
var $db_host="domain.co.uk.mysql"; 
var $db_user="user";                 
var $db_password="password";    
var $db_name="dbname"; 
var $db_tableprefix="tableprefix"; 
//connect to MySQL server
mysql_connect($db_host,$db_user,$db_password);

//select the database
@mysql_select_db($db_name) or die ("Unable to select database: " . mysql_error());

}
?>

4 个答案:

答案 0 :(得分:2)

您的所有陈述都不在方法中。并且您没有实例化该类并调用了一个可以执行语句的方法。

类用于面向对象的编程。你的班级在课堂上只有旧的常规程序代码,但不起作用。

<?php
    class config{

        //define server, username, password and database
        var $db_host="domain.co.uk.mysql"; 
        var $db_user="user";                 
        var $db_password="password";    
        var $db_name="dbname"; 
        var $db_tableprefix="tableprefix"; 

        public function connect() {
            //connect to MySQL server        
            mysql_connect($db_host,$db_user,$db_password);

            //select the database
            @mysql_select_db($db_name) or die ("Unable to select database: " . mysql_error());
        }

    }

    $var = new config();
    $var->connect();

?>

答案 1 :(得分:1)

旧的mysql库不是最适合面向对象的类。像这样使用mysqli ......

 class config{
     //define server, username, password and database
     private $db_host="domain.co.uk.mysql"; 
     private $db_user="user";                 
     private $db_password="password";    
     private $db_name="dbname"; 
     private $db_tableprefix="tableprefix"; 

    //connect to MySQL server
    public static function getConnection(){
         return new mysqli($db_host,$db_user,$db_password, $db_name);
    }
}

然后像这样打电话给你的班级:

$conn = config::getConnection();

然后您可以使用如下连接:

$result = $conn->query("select * from sometable;");
var_dump($result);

另外,您可能希望将您的类命名为config以外的其他内容....也许是DbConnection并将其自身放在一个名为DbConnection.php的文件中

祝你好运!

答案 2 :(得分:1)

为了争论这里,我假设你的名为“config”的类意味着不仅仅包含数据库的配置信息。在这种情况下,我会创建一个名为config的类,其中包含您的配置设置。

class config {
    //define server, username, password and database
    var $db_host="domain.co.uk.mysql"; 
    var $db_user="user";                 
    var $db_password="password";    
    var $db_name="dbname"; 
    var $db_tableprefix="tableprefix"; 
}

你的数据库对象的一个​​类,它应该扩展mysqli对象,因为它比过程的mysql函数更有效并为OOP构建:

   class db extends mysqli {
        protected static var $dbo = NULL;
        public static function &getInstance() {
            //load config
            $config = new config();
            if( self::$dbo === NULL ) self::$dbo = new db($config->db_host,$config->db_user,$config->db_password, $config->db_name);
        }
        return self::$dbo;
   }

这将允许您在DBO类中构建其他功能,这将阻止脚本与数据库建立重复连接。如果要使用数据库连接,请调用:

$db = db::getInstance();

您将收到可以从那里使用的db类(mysqli)的实例。

答案 3 :(得分:0)

在编写一个类时,你必须知道事情是如何工作的...拥有属性,方法等等。只是编写类不会完成这项工作。定义你想要做什么 - 一般的mysql类连接器,一些特定的任务?