在使用数据库的每个函数中是否需要php mysql连接?

Mol*_*tra 9 php mysql

我正在创建一个php restful API,目前我在每个函数中都有数据库连接信息.

//Connect To Database
    $hostname=host;
    $username=username;
    $password=password;
    $dbname=dbname;

    mysql_connect($hostname, $username, $password) OR DIE('Unable to connect to database! Please try again later.');
    mysql_select_db($dbname);
mysql_query($sqlApiAccess) or die('Error, insert query failed');
Run Code Online (Sandbox Code Playgroud)

这样做的最佳方法是什么,每个php文件可以有一个数据库连接吗?或者我是否需要按使用数据库的功能执行此操作.

Avi*_*i C 13

为避免每次都创建新的数据库连接,我们可以使用Singleton设计模式 -

我们需要一个数据库类来处理数据库连接 -

Database.class.php

<?php
        class Database
        {
            // Store the single instance of Database
            private static $m_pInstance;

            private $db_host='localhost';
            private $db_user = 'root';
            private $db_pass = '';
            private $db_name = 'databasename';

            // Private constructor to limit object instantiation to within the class
            private function __construct() 
            {
                mysql_connect($this->db_host,$this->db_user,$this->db_pass);
                mysql_select_db($this->db_name);
            }

            // Getter method for creating/returning the single instance of this class
            public static function getInstance()
            {
                if (!self::$m_pInstance)
                {
                    self::$m_pInstance = new Database();
                }
                return self::$m_pInstance;
            }

            public function query($query)
            {
               return mysql_query($query);
            }

         }
?>
Run Code Online (Sandbox Code Playgroud)

我们可以从其他文件中调用它 -

other.php

<?php
       include 'singleton.php';
       $pDatabase = Database::getInstance();

       $result = $pDatabase->query('...');
?>
Run Code Online (Sandbox Code Playgroud)


Men*_*ual 11

创建config.php并添加代码:

config.php:

$hostname = 'host';
$username = 'username';
$password = 'password';
$dbname   = 'dbname';

$conn = mysqli_connect($hostname, $username, $password) OR die('Unable to connect to database! Please try again later.');
mysqli_select_db($conn, $dbname);
Run Code Online (Sandbox Code Playgroud)

然后在任何你想使用mysql的文件中,添加以下内容:

script2.php

<?php
require_once 'config.php';

mysqli_query($sqlApiAccess) or die('Error, insert query failed');
?>
Run Code Online (Sandbox Code Playgroud)

  • 还; 来自专业人士的消息 :P 请务必清理您的输入 ;) (2认同)
  • @tehlulz首先,您的config.php在include上做了一些工作,应该避免(例如,从config.php移出对mysql_connect的调用)。名称* config.php *不会告诉未来的维护者它实际上已经建立了连接。第二,依靠全球国家是有害的。mysql支持使用句柄以及将句柄存储为全局状态。 (2认同)