如何保留现有的数据库连接?

时间:2013-06-15 12:21:37

标签: php mysql

我是PHP评论脚本的开发者,该脚本旨在包含在用户网站的主体中。该脚本有自己的数据库连接,目前使用“MySQL”扩展。为了使脚本更易于集成,我保留了网站现有的数据库连接(如果有的话),在连接到脚本自己的连接之前添加这两行

@$original_database = mysql_query('SELECT DATABASE();');
@$original_database = mysql_result($original_database, 0);

..然后 我的脚本完成后我选择原始数据库..

if (!empty($original_database)) {
    @mysql_select_db ($original_database);
}

目前此工作正常。然而,许多网站(非常正确地)开始使用更新的扩展,例如“MySQLi”和“PDO”,这使得保留现有数据库连接变得更加困难,因为例如“MySQLi”会抱怨连接是通过'MySQL ”。你能推荐最好的方法来解决这个问题吗?如果它有所不同,我计划在不久的将来从'MySQL'切换到'MySQLi',但显然我仍会遇到同样的问题。

1 个答案:

答案 0 :(得分:0)

始终使用'MySQLi'

function custom_mysqli_connect(){
    $GLOBALS['db_connect']=false;
    $GLOBALS['db_connect']=@mysqli_connect(HOSTNAME, USERNAME, PASSWORD);
    if($GLOBALS['db_connect']==false){
        echo("Unable to connect to the database");
    }
    if(!@mysqli_select_db($GLOBALS['db_connect'], DATABASE)){
        echo("Unable to select database");
    }
    mysqli_query($GLOBALS['db_connect'],'SET NAMES UTF8');
}

一旦

调用 custom_mysqli_connect()

提出您的疑问:

$query_1 = "SELECT * FROM table";

if($results=@mysqli_query($GLOBALS['db_connect'], $query_1)){

   $array=array();

   while($result=mysqli_fetch_assoc($results)){

      $array[]=$result;

   }    

   mysqli_free_result($results);

}

完成后

@mysqli_close($GLOBALS['db_connect']);

还有很多其他方法可以获取结果

  

mysqli_ result :: fetch_ all

     

mysqli_ result :: fetch_ array

     

mysqli_ result :: fetch_ assoc

     

mysqli_ result :: fetch_ field_ direct

     

mysqli_ result :: fetch_ field

     

mysqli_ result :: fetch_ fields

     

mysqli_ result :: fetch_ object

     

mysqli_ result :: fetch_ row

请参阅:http://php.net/manual/en/mysqli.summary.php