Php 在每个函数中打开和关闭mysql的错误做法

Php 在每个函数中打开和关闭mysql的错误做法,php,mysql,oop,mysqli,Php,Mysql,Oop,Mysqli,例如: class SimpleClass{ public function foo() { mysql_open(); //do mysql query here mysql_close(); } public function boo() { mysql_open(); //do mysql query here mysql_close(); } } 还是在课程开始时打开一个mysql_,在课程结束时打开一个mysql_更好

例如:

class SimpleClass{
  public function foo() {
    mysql_open();
    //do mysql query here
    mysql_close();
  }

  public function boo() {
    mysql_open();
    //do mysql query here
    mysql_close();
  }
}
还是在课程开始时打开一个mysql_,在课程结束时打开一个mysql_更好

谢谢

编辑:我使用mysqli,这只是一个例子。
我应该在每个页面文件中打开和关闭吗?与index.php中一样,cataegory.php应该有一个打开和关闭选项。

是的,这是一种不好的做法。原因如下:

  • 制造康涅狄格州的成本很高
  • 调用多个函数期间无法使用事务
  • 每个实例都有自己的连接。太糟糕了
  • 等等

使用PDO,或者自己创建singleton db类。

我建议将连接包装在作为singleton运行的DAO类中,以管理您的连接。除了上面其他人所说的关于准备好的语句和不推荐使用的函数之外,我还将使用这些不推荐使用的函数来演示DAO概念

<?php
class MyGreatDAO{
    private static $con = null//late static feature in php 5.3 
    private __construct(){
    }

    public static getInstance(){
        if($con === null){
            $con = mysql_connect($server,$user,$pass);

         }
        return $con;
}//untested

建议。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。请不要这样做,除非您正在进行大量的中间处理。打开和关闭连接需要开销。有时候,如果您要在几分钟内循环和处理结果,那么释放连接是有益的。但这是逐案的。额外读取在脚本开头打开连接对象中的连接;并将该连接对象传递/注入到所有需要它的类中,以便它们可以使用该类正在执行的操作的已打开的ConnectionPend。外面有线路吗?所有的查询都在这个类内吗?..@wumm在这个类外有查询。更新了我的帖子。我在回答中提到了它已经过时的事实。此外,单身人士有什么问题?这种代码的问题在于,您的服务状态是隐式的。也许考虑阅读?如果我可以建议只传递对象,这样就可以清楚地知道谁在使用它,而不是在代码中有一个美化的全局(单例)?@BenjaminGruenbaum,那篇文章的评论说明了很多。他有很多很好的观点,但其他人也没有。