我刚刚开始学习面向对象编程的概念,并且已经创建了一个用于连接到数据库、选择数据库和关闭数据库连接的类。到目前为止,除了关闭与数据库的连接之外,一切似乎都正常。
class Database {
private $host, $username, $password;
public function __construct($ihost, $iusername, $ipassword){
$this->host = $ihost;
$this->username = $iusername;
$this->password = $ipassword;
}
public function connectdb(){
mysql_connect($this->host, $this->username, $this->password)
OR die("There was a problem connecting to the database.");
echo 'successfully connected to database<br />';
}
public function select($database){
mysql_select_db($database)
OR die("There was a problem selecting the database.");
echo 'successfully selected database<br />';
}
public function disconnectdb(){
mysql_close($this->connectdb())
OR die("There was a problem disconnecting from the database.");
}
}
$database = new database('localhost', 'root', 'usbw');
$database->connectdb();
$database->select('msm');
$database->disconnectdb();
当我尝试断开与数据库的连接时,收到以下错误消息:
Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in F:\Programs\webserver\root\oop\oop.php on line 53
我猜这并不像将connectdb方法放在mysql_close函数的括号中那么简单,但是找不到正确的方法。
谢谢
发布于 2012-03-11 07:22:17
您没有从connectdb()
返回任何内容,但是将此函数的返回值传递给了mysql_close()
。
发布于 2012-03-18 11:55:25
您应该知道,mysql_*
函数是在PHP4中引入的,比您之前的版本还多。这个接口已经非常老了,而且这个过程已经开始实际的deprecating this extension了。
在2012年,您不应该使用mysql_*
函数编写新代码。
有两个非常好的选择:PDO和MySQLi。这两个工具都已经在编写面向对象代码时考虑到了,而且它们还使您能够使用prepared statements。
您在用PDO编写的原始帖子中展示的示例将如下所示:
//connect to the the database
$connection = new PDO('mysql:host=localhost;dbname=msm', 'username', 'password');
//disconnects
$connection = null;
当然,还有更复杂的用例,但这是需要改进的地方。
发布于 2014-05-11 10:57:28
面向对象编程可以很好地与PDO和mysqli配合使用。试试看
https://stackoverflow.com/questions/9651038
复制相似问题