我是一个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());
}
?>
答案 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类连接器,一些特定的任务?