如何在函数内部建立mysql连接

时间:2011-07-07 23:36:30

标签: php mysql

如果我的mysql连接在另一个包含文件中,如何在函数内部建立mysql连接?

这是mysql连接包含文件。

DEFINE ('DB_USER', 'username');
DEFINE ('DB_PASSWORD', 'password');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'adfg');

$dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if (!$dbc) {
    trigger_error ('Could not connect to MySQL: ' . mysqli_connect_error() );
}

3 个答案:

答案 0 :(得分:2)

文件:DB.php

DEFINE ('DB_USER', 'username');
DEFINE ('DB_PASSWORD', 'password');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'adfg');

function getConnection() {
  $dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

  if (!$dbc) {
    trigger_error ('Could not connect to MySQL: ' . mysqli_connect_error() );
  } else {
    return $dbc;
  }
}

其他档案:

require_once '/path/to/DB.php';

$connection = getConnection();
var_dump($connection->host_info);

答案 1 :(得分:0)

你可以在函数中创建$ dbc global ....只要包含这两个文件它就可以正常工作

@powtac:

我同意每个案例,但是如果你打算为大型网站制作更强大的数据库解决方案,那么拥有一个类对象(命名很重要)可以成为一个强大的工具。这并不是说你不能做同样的事情,并使对象成为函数内部的静态变量,以防止粗心的开发人员覆盖它:)

答案 2 :(得分:0)

由于您可能会多次调用getConnection,因此将其设为static是有意义的,这样就不会多次创建它。建立在powtac的版本上:

DEFINE ('DB_USER', 'username');
DEFINE ('DB_PASSWORD', 'password');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'adfg');

function getConnection() {
  static $dbc;

  if (!$dbc) {
      $dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

      if (!$dbc) {
          trigger_error ('Could not connect to MySQL.', E_USER_ERROR);
      }
  }

  return $dbc;
}

然后,您将包含此文件,并在方便的地方拨打getConnection

除了创建$dbc static以便它只创建一次之外,我还在无法建立连接时删除了MySql错误消息(如果你不提供这样的信息通常是个好主意用户可能会看到它;在开发时连接上的错误相对较少,可以在现场轻松调试)。最后,我离开了trigger_error并且没有用更常见的die替换它,因为它可能是错误处理框架的一部分。但是,我确实提高了错误严重性,以表示尝试连接时的错误应该是一个立即显示停止。