Нужно ли мне соединение 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'); 

Каков наилучший способ сделать это? Могу ли я иметь одно соединение с базой данных для каждого php-файла? Или мне нужно сделать это для каждой функции, которая использует базу данных.

Solutions Collecting From Web of "Нужно ли мне соединение php mysql в каждой функции, использующей базу данных?"

Создайте config.php И добавьте код:

config.php:

 $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, добавьте следующее:

script2.php

 <?php require_once 'config.php'; mysql_query($sqlApiAccess) or die('Error, insert query failed'); ?> 

Чтобы избежать создания нового подключения к базе данных каждый раз, мы можем использовать шаблон проектирования 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); } } ?> 

& мы можем назвать это из других файлов –

other.php

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

Нет необходимости устанавливать соединение в каждой функции. вам необходимо создать файл соединения, например conn.php и создать запросы на подключение.

 <?php mysql_connect("localhost", "admin", "1admin") or die(mysql_error()); mysql_select_db("test") or die(mysql_error()); ?> 

в любом другом файле, где вы хотите подключиться к базе данных, просто напишите эту строку

 <?php include("conn.php");?> 

В этом файле вы можете запускать любой запрос.

сделай это:

 $db_connection= mysql_connect($hostname, $username, $password) OR DIE('Unable to connect to database! Please try again later.'); 

И каждый раз, когда вы хотите запросить:

 mysql_query("my_query",$db_connection); 

Обратите внимание: если вы подключитесь к БД в функции, вам понадобится глобальное $db_connection .

И когда вы хотите закрыть соединение с БД:

 mysql_close($db_connection); 

Почему вы не можете переместить информацию о соединении в конфигурацию и вызов mysql_connect на какой-то завод?

Например

 class ConnectionFactory { public static MysqlConnection CreateConnection() { $connection = mysql_connect(Config::$host, Config::$port etc); mysql_select_db($connection, Config::$schema); return $connection; } } 

а затем в вашем коде

 $connection = ConnectionFactory::CreateConnection(); mysql_query($connection, $sqlApiAccess) or die('Error, insert query failed');