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

Example:

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

  public function boo() {
    mysql_open();
    //do mysql query here
    mysql_close();
  }
}

Or is it better to have one mysql_open in the beginning of the class and one in the end?

Thanks.

EDIT: I use mysqli, this is just an example. Should I open and close in each page file instead? Like in index.php, cataegory.php should have one open and close each.

Yes, It is bad practice. Here are reasons:

  • cost of making connectio is high
  • cannot use transaction during many function is called
  • every instance has it's own connection. It's too bad
  • and so on

Use PDO, or make singleton db class youself.

I would recommend wrapping the connection inside of a DAO class that operates as a singleton to manage your connection. In addition to what others have said above regarding prepared statements, and deprecated functions, I'm going to use those same deprecated functions to demonstrate the DAO concept

<?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

Basically, the idea is to prevent unnecessary data connections for performance reasons, and just persist the same connection throughout execution. You can use this same class to perform other DB operations as well on $con