0

我在索引文件中有一个 php 站点,包括连接到 db 函数:

function connect(){
mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("database");
}

我在任何需要连接的地方都使用这个功能

例如:

<?php
connect();
$lastnews_sql = mysql_query("SELECT text,time FROM small WHERE active='0' ORDER BY time DESC LIMIT 10");
if(mysql_num_rows($lastnews_sql)) {
    while($Result123 = mysql_fetch_object($lastnews_sql)) {
?>

并使用此选择:文本;?>

在使用结束时:

<?php
}
}
mysql_close();
?>

有超过 10 个 connect();和 mysql_close(); 在索引文件中

所以索引文件中有太多的连接错误

我该如何优化这个方法?

4

1 回答 1

1

单例模式似乎非常适合这一点。

class Database
{
    private static $instance;

    public function getInstance()
    {
         if(self::$instance == null)
         {
            // Create a connection to the database.
            // NOTE: Use PDO or mysqli. mysql is deprecated.
         }
         return self::$instance; 
    }
}

利用

在您的课程中connect,假设您使用的是PDO对象,而不是调用 ,您可以执行以下操作:

$db = Database::getInstance();
$statement = $db->prepare("SELECT * FROM tblName WHERE val = :val");
$statement->bindParam(":val", $value);
$statement->execute();
$result = $statement->fetchAll();

为什么是这种模式?

单例模式的优点是一次只存在一个自身实例。这意味着您将只创建一个到数据库的连接。

设置这个

好的,所以你要做的第一件事就是创建一个新文件,我们称之为Database.php. 在里面Database.php,你几乎想写我写的代码,只是不要使用mysql_*. 查看PDO我提供的教程,了解如何使用PDO对象连接到数据库,然后将该连接代码放入if statement.

     if(self::$instance == null)
     {
        self::$instance = new PDO('mssql:host=sqlserver;dbname=database', 'username', 'password');
     }

然后,要在另一个类中使用它,require请在顶部放置一条语句。就像是:

require_once('Database.php');

最后,看看我在use上面的部分中输入的代码。这就是你在课堂上使用它的方式。

有用的链接

PDO 教程http ://php.net/manual/en/book.pdo.php
单例模式http ://www.oodesign.com/singleton-pattern.html

于 2013-07-22T12:34:26.760 回答