Правильная работа классов с БД

Статус
В этой теме нельзя размещать новые ответы.

Bubuz

Guest
Правильная работа классов с БД

Всем привет,
осваиваю классы и передо мной стал вопрос как лучше организовывать доступ к БД в объектах.
так что бы каждый раз не писать
PHP:
$link = mysql_connect($host,$user,$password);
mysql_select_db($db_name);
так же не хотелось бы создавать функцию и в ней прописывать файл конфигурации
PHP:
function connect($host,$user,$password){
 include "config.php";
 $link = mysql_connect($host,$user,$password);
 mysql_select_db($db_name);
 return $mysql_link;
}
а потом вставлять connect() в конструктор класса.
хотелось бы что бы вначале индексового файла один раз подключался файл конфигурации и в дальнейшем использовалось соединение с БД и закрытие сеанса.
Поделитесь пожалуйста своими мыслями.
 

kvf77

Red Devil
vafel
То, что он хочет сделать никак к PEAR не относится - он не просит абстракции.

а передавать в классы нет проблем:

$class = new MyClass($mysl_link);

внутри класса присваеваешь его в конструкторе переменной:

$this->mysql_link = &$mysl_link;

Внутри класса он будет доступен как $this->mysql_link
 

kvf77

Red Devil
vafel
Не советуй, короче, что не знаешь!
Какой пример? Там создается объект.
 

Said

Guest
kvf77
Передавать каждый раз в конструктор не всегда удобно

Bubuz
функция не должна читать конфиг и конектится к базе при каждом вызове:
PHP:
function &getDBConnection(){
  if(empty($GLOBALS['_DB_LINK'])) {
    include "config.php";
    $GLOBALS['_DB_LINK'] =       mysql_connect($host,$user,$password);
    mysql_select_db($db_name);
  }
  return $GLOBALS['_DB_LINK'];
}
потом в любом месте где нужно легко получаем линк
$link =& getDBConnection();
 

Bubuz

Guest
почему у меня возникают предупреждения?
PHP:
class user{
	public 	$name,
			$surname,
            $login,
            $pas,
    		$purchases,
            $date_reg,
            $mysql_link;
	function __construct($mysql_link){
		$this->mysql_link = $mysql_link;
        print $this->mysql_link;
    }
	function check_user($login, $pas){
		$sql = "SELECT login FROM users WHERE login='$login' AND pas='$pas'";
        $res = mysql_query($sql,$this->mysql_link);
	    $num = mysql_num_rows($res);
		if($num){
			return "true";
        }else{
			return "false";
        }
    }
}
mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\Projects\Php\Aztec\user.php on line 21
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Projects\Php\Aztec\user.php on line 31

-~{}~ 30.06.05 17:54:

вобщем предупреждение в этой строке
$num = mysql_num_rows($res);
 

Фанат

oncle terrible
Команда форума
потому, что запрос выполнился с ошибкой.
тебе бы не классы делать, а с бд научиться бы сначала работать.
 

Bubuz

Guest
Фанат
будь так добр оставь свои советы при себе :)
потому что запрос работает нормально

-~{}~ 30.06.05 18:15:

to Said
респект

пока буду делать так, но все же хотелось сделать все это в отдельном классе и потом при необходимости использовать его методы
 

Фанат

oncle terrible
Команда форума
это заблуждение.
тем более пагубное, что ты уверен в обратном.

И советы я свои никак не могу оставить. Это ты пришёл ко мне за советом. Если мои советы тебе не нужны - ищи советчиков в другом месте.
 

Bubuz

Guest
Фанат
к тебе лично я не приходил, хочешь помочь - помоги, хочешь высказать свое фэ - оно мне не нужно и оставь его себе.
Запрос работает нормально, это проверено, видимо проблема с идентификатором соединения
 

Фанат

oncle terrible
Команда форума
я не люблю препираться с ламерами.
подумаешь о своих манерах - потом приходи.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху