Подключение к MDB2 в PHP-объекте - PullRequest
2 голосов
/ 09 июня 2011
$dsn="mysql://$db_username:$db_password@$db_hostname/$db_database";
global $mdb2;
$mdb2=MDB2::connect($dsn);
if (PEAR::isError($mdb2))
{
    die($mdb2->getMessage());
}

Я делаю это для подключения к моей БД, я помещаю это в отдельный php-файл с именем Connect.php и требую его на всех своих страницах.

Однако, когда мне нужно выполнить запрос внутрифункция, мне придется передать $ mdb2 функции в качестве аргумента?Это правильный способ сделать это.

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

Нужно ли заново устанавливать соединение каждый раз (т.е. написать функцию для соединения)

Не можете ли вы сделать соединение постоянным и глобальным?

1 Ответ

2 голосов
/ 09 июня 2011

Вы можете запросить файл Connect.php на всех своих страницах, и каждая функция, которой необходимо использовать соединение, может ссылаться на переменную global $mdb2.

Например:

# In file Connect.php

<?php
$dsn="mysql://$db_username:$db_password@$db_hostname/$db_database";
$mdb2=MDB2::connect($dsn);
if (PEAR::isError($mdb2))
{
    die($mdb2->getMessage());
}


#In any other file

<?php
require_once "Connect.php";
getUser($id) {
    global $mdb2;
    $mdb2->query("SELECT ....");
}

Другое решение использует Singleton Class для доступа к базе данных, так что есть функция, которая всегда возвращает ссылку на вашу переменную $mdb2.

Конечно, обсуждение Global или Singleton для подключения к базе данных? - это то, что стоит прочитать.

...