我可以使用函数作为mysql_close(函数)的参数;

时间:2014-09-04 16:39:18

标签: mysql function

我有一个功能

function connect
{
$c = MySQL_connect('db','ss','nn');
if(!$c)
die();
}

现在可以使用了     MySQL_close(连接()); 关闭连接,因为我必须在一个函数和许多数据库中使用许多连接。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

$conn1 = mysql_connect( ... );
$conn2 = mysql_connect( ... );

// any code here...

mysql_close($conn1);
mysql_close($conn2);

你使用PHP吗?在PHP中不推荐使用Mysql _...函数。请改用Mysqli或PDO。 Mysqli有一个API,它与旧的Mysql扩展非常相似。

<强>更新

评论:我会写'mysqli'而不是'mysql'。为简单起见,我的例子是程序式的。

  • 函数也可以通过连接返回。
  • 如果您使用多个数据库,则可以在这些数据库之间切换:mysqli_db_select("other_db");
  • 如果您使用模式间查询,那么使用完全前缀的表名是更好的选择:mysqli_query("SELECT * FROM db1.users UNION SELECT * FROM db2.users");
  • 最佳选择是基于配置的连接处理。将配置文件中的连接设置映射(或 dsn -s,PDO和许多DBAL库支持)放置,并在创建时加载它。这是一个简化的例子:

    function loadDbConfiguration($name) {
        $configs = yaml_parse( ... );
        if (array_key_exists($name, $configs)) {
            return $configs[$name];
        } else {
            // throw any exception or do something other what you prefer
        }
    }
    
    function getConnection($name) {
        static $connections;
        if (is_null($connections)) {
            $connections = array();
        }
    
        if (array_key_exists($name, $connections)) {
            return $connections[$name];
        }
    
        $config = loadDbConfiguration($name);
        if (($conn=@mysqli_connect(  [use $config here...]  ))!==false) {
            $connections[$name] = $conn;
            return $conn;
        } else {
            // throw any exception or do something other what you prefer
        }
    }
    
    function closeConnection($name) {
        // do not forget to add error handlings
        mysqli_close(getConnection($name));
    }
    
    $defaultConn = getConnection("default");
    $site1Conn = getConnection("site1");
    
    // any code here...
    
    // later...
    $myDefaultConn = getConnection("default"); // will same as $defaultConn
    $site2Conn = getConnection("site2");
    
    // at end:
    closeConnection("default");
    closeConnection("site1");
    closeConnection("site2");
    

    `