在每个函数中打开和关闭mysql的不良做法

时间:2013-11-29 16:47:36

标签: 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_open,最后有一个吗?

感谢。

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

2 个答案:

答案 0 :(得分:0)

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

  • 连接成本高
  • 在多个函数调用期间无法使用事务
  • 每个实例都有自己的连接。太糟糕了

使用PDO,或者自己制作单例db类。

答案 1 :(得分:-4)

我建议在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

基本上,我们的想法是出于性能原因防止不必要的数据连接,并且只是在整个执行过程中保持相同的连接。您可以使用同一个类在$ con

上执行其他数据库操作