[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не проходит создание экземпляра
Страницы: 1, 2
Rigel
У меня есть несколько файлов, в которых я создаю экземпляр класса для работы с БД.

есть два файла:

Содержимое файла header.php :
<html>
<
body>
<?php
$db = new Db;
$db->getUserByCookie($_COOKIE['id'], $_COOKIE['hash']);
?>
<div class="menu"><!-- menu --></div>

Содержимое файла news.php :
<?php
$db = new Db;
$db->getNews();

Если в header.php закомментить эти две строчки, то все работает, новости подгружаются, но если оставить все как есть, то возникает ошибка

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/project/classes/Db.php on line 22 Warning: Invalid argument supplied for foreach() in /home/project/classes/views/showNews.php on line 5
Warning: mysql_close(): 5 is not a valid MySQL-Link resource in /home/project/classes/Db.php on line 77


Вероятно ошибка возникает из-за закрытия php-файла ?>
Что можно с эти поделать?
T1grOK
Ошибка где то в недрах Db.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Rigel
T1grOK
На самом деле нет, тут проблема именно с созданием экземпляра.
Можно упростить код вот так, ошибка будет та же:

Содержимое файла header.php
<html>
<
body>
<?php
$db = new Db;
?>
<div class="menu"><!-- menu --></div>

Содержимое файла news.php :
<?php
$db = new Db;
killer8080
Rigel
ну для начала нужно показать исходник класса db, а то штатный экстрасенс в отпуске biggrin.gif
Rigel
killer8080
:)
<?php
class
Db {
protected $link;
protected $result;

function __construct() {
$this->link = mysql_connect(DBHOST, DBUSER, DBPASS) or die(mysql_error());
mysql_set_charset('utf8', $this->link);
mysql_select_db(DBNAME, $this->link) or die(mysql_error());
mysql_query ("SET NAMES utf8");
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
}

public function getNews($table='news', $columns='*', $args='ORDER BY `created` desc') {
$table = mysql_real_escape_string($table);
$columns = mysql_real_escape_string($columns);
$args = mysql_real_escape_string($args);
$query = mysql_query('SELECT '.$columns.' FROM `'.$table.'` '.$args);
while ($row = mysql_fetch_assoc($query)) {
$this->result[] = $row;
}
return $this->result;
}

public function getUserByCookie($id, $hash) {
$id = mysql_real_escape_string(intval($id));
$hash = mysql_real_escape_string($hash);
$query = mysql_query('SELECT * FROM `users` WHERE `id` = "'.$id.'"');
if(mysql_num_rows($query) <= 0) {
return false;
}
while ($row = mysql_fetch_assoc($query)) {
$this->result[] = $row;
}
return $this->result;
}

function __destruct() {
mysql_close($this->link);
}
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.