优化与mysql的连接

时间:2013-07-22 12:30:42

标签: php mysql

我有一个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)) {
?>

并使用此选项:     文本; ?&GT;

在使用结束时:

<?php
}
}
mysql_close();
?>

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

因此索引文件中的连接错误太多

我该如何优化这个方法?

1 个答案:

答案 0 :(得分: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();

为何选择此模式?

Singleton模式的优点是一次只能存在一个实例。这意味着您只能创建一个与数据库的连接。

设置

好的,所以你要做的第一件事是创建一个新文件,我们称之为Database.php。在Database.php内,您想要编写我编写的代码,只需 NOT 使用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