Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/67: Рейтинг темы: голосов - 67, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 8

Fatal error: Call to a member function connect() on a non-object in

13.11.2012, 07:08. Показов 12355. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Fatal error: Call to a member function connect() on a non-object in /home/users1/w/wye-solution/domains/kapitalwork.com/index.php on line 28
Вот сам файл:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
 
 
 
 @ob_start();
@session_start();
error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set('display_errors', TRUE);
ini_set('html_errors', FALSE);
date_default_timezone_set('Europe/Moscow');
header('Content-Type: text/html; Charset=UTF-8');
define('DIR', dirname(__FILE__));
define('ENGINE', DIR . '/engine');
define('DATA', ENGINE . '/data');
define('CLASSES', ENGINE . '/classes');
define('MODULES', ENGINE . '/modules');
define('COMPONENTS', ENGINE . '/components');
define('SCRIN', true);
include ENGINE . '/config.php';
include CLASSES . '/mysqli.php';
include CLASSES . '/functions.php';
include DATA . '/config.php';
$func = null;
$mcache = null;
$mcache->connect('localhost', 11211);
$time = null;
 
if (!empty($_GET['ref'])) {
    $ref_id = null;
    $check_ref = null;
 
    if (!empty($check_ref['user_id'])) {
        $referer = null;
        SetCookie('referer', $referer, time() + (7 * 24 * 3600));
    }
}
 
$add_money = null;
 
while ($add_m = null) {
    $de_id = null;
    $dep_sum = $add_m['dep_sum'] * $add_m['dep_x'];
    $us_id = null;
 
    if ($add_m['dep_system'] == 'pm') {
        $db->query('UPDATE `users` SET `user_money_p`=user_money_p+\'' . $dep_sum . '\' WHERE `user_id`=\'' . $us_id . '\'');
    } else {
        $db->query('UPDATE `users` SET `user_money_l`=user_money_l+\'' . $dep_sum . '\' WHERE `user_id`=\'' . $us_id . '\'');
    }
 
    $db->query('UPDATE `dep_us` SET `dep_end`=\'1111111111\' WHERE `de_us`=\'' . $de_id . '\'');
    $db->query('UPDATE `stat` SET `info`=info-\'1\' WHERE `st_id`=\'4\'');
    $db->query('UPDATE `stat` SET `info`=info+\'1\' WHERE `st_id`=\'5\'');
}
 
if (!empty($GLOBALS['_SESSION']['user_id'])) {
    $user_info = $mcache;
    $user_email = null;
 
    if (empty($user_info['user_id'])) {
        exit('Такого пользователя не существует!');
    }
 
    $user_id = null;
    $user_pm = $ref_id;
    $user_money_p = null;
    $user_money_l = 'SELECT `user_id` FROM `users` WHERE `user_id`=\'' . $ref_id . '\'';
    $user_login = $check_ref;
 
    if ($user_id == $admin_id) {
        $user_status = 536;
    } else {
        $user_status = 537;
    }
} else {
    $user_status = 535;
}
 
$page = (!empty($_GET['page']) ? $_GET['page'] : 'index');
include COMPONENTS . '/page.php';
$content = $add_money;
ob_end_clean();
include DIR . '/tpl/header.php';
echo $content;
include DIR . '/tpl/footer.php';
?>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.11.2012, 07:08
Ответы с готовыми решениями:

Fatal error: Call to a member function fetch_assoc() on a non-object in
Делал сайт по уроку на ютубе https://www.youtube.com/watch?v=Z_5RGo38cdc&amp;list=PL0lO_mIqDDFUugI1DNHH634g-9MYU2gPR&amp;index=16. Проверил 100...

Fatal error: Call to a member function IncludeComponent() on a non-object
Не могу понять, что случилось. Ничего не удалял и не редактил. Подскажите разгадку. Заранее спасибо. Fatal error: Call to a member...

Fatal error: Call to a member function getField() on a non-object
пожалуйста помогите не знаю какая ошибка protected function getField($field_out, $field_in, $value_in) { return...

32
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
13.11.2012, 08:51
aleks870, ну так вы же пытаетесь NULL использовать как объект (object):
PHP
1
2
$mcache = null;
$mcache->connect('localhost', 11211);
Вам нужно создать объект класса, который содержит эту функцию: connect. Вот так:
PHP
1
2
$mcache = new Тут_имя_вашего_класса;
$mcache->connect('localhost', 11211);
0
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 8
13.11.2012, 08:59  [ТС]
А какое имя,любое
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
13.11.2012, 09:02
Нет, имя
Цитата Сообщение от Lyodik Посмотреть сообщение
класса, который содержит эту функцию: connect.
0
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 8
13.11.2012, 09:08  [ТС]
У меня не получается?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
13.11.2012, 09:12
aleks870, вы php знаете? ООП?
0
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 8
13.11.2012, 09:14  [ТС]
Очень плохо.Объясните пожалуйста
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
13.11.2012, 09:21
Ну, если ошибка только тут, то не страшно. Значит так, вот эти подключаемые файлы:
PHP
1
2
3
4
include ENGINE . '/config.php';
include CLASSES . '/mysqli.php';
include CLASSES . '/functions.php';
include DATA . '/config.php';
Поочерёдно открываете в блокноте (или в другом текстовом редакторе. Только не в Word'e ). Жмёте Ctrl+F и в строку поиска пишите "function connect", жмёте "Искать". Как только найдёте - смотрите, в каком классе она лежит. Затем копируете имя класса и пишите туда, куда я вам указал в предыдущих сообщениях.
0
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 8
13.11.2012, 09:36  [ТС]
Я только в одном месте нашел,здесь: include CLASSES . '/mysqli.php';
Тут вот что:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?php 
 
if( !defined("SCRIN") ) {   
    exit ( "Прямой вызов файла запрещён" );
}
 
class db {
 
    public $db_id = "false";
    public $query_num = 0;
    public $query_list = array();
    public $mysql_error = "";
    public $mysql_version = "";
    public $mysql_error_num = 0;
    public $mysql_extend = "MySQLi";
    public $MySQL_time_taken = 0;
    public $query_id = "false";
 
    public function connect($db_user, $db_pass, $db_name, $db_location="localhost", $show_error=1) {       
        $db_location = explode(":", $db_location);
        if( isset( $db_location[1] ) ) {            
            $this->db_id = @mysqli_connect($db_location[0], $db_user, $db_pass, $db_name, $db_location[1]);
        }
        else {            
            $this->db_id = @mysqli_connect($db_location[0], $db_user, $db_pass, $db_name);
        }
 
        if( !$this->db_id ) {
            if( $show_error == 1 ) {                
                $this->display_error(mysqli_connect_error(), "1");
            }
            else {                
                return false;
            }
        }
 
        $this->mysql_version = mysqli_get_server_info($this->db_id);
        if( !defined("COLLATE") ) {            
            define("COLLATE", "UTF-8");
        }
 
        mysqli_query($this->db_id, "SET NAMES '" . COLLATE . "'");
        return true;
    }
 
    public function query($query, $show_error="true") {        
        $time_before = $this->get_real_time();
        if( !$this->db_id ) {            
            $this->connect(DBUSER, DBPASS, DBNAME, DBHOST);
        }
        if( !$this->query_id = mysqli_query($this->db_id, $query) ) {            
            $this->mysql_error = mysqli_error($this->db_id);
            $this->mysql_error_num = mysqli_errno($this->db_id);
            if( $show_error ) {                
                $this->display_error($this->mysql_error, $this->mysql_error_num, $query);
            }
        }
        $this->MySQL_time_taken += $this->get_real_time() - $time_before;
        $this->query_num++;        
        return $this->query_id;
    }
 
    public function get_row($query_id="") {        
        if( $query_id == "" ) {            
            $query_id = $this->query_id;
        }
        return mysqli_fetch_assoc($query_id);
    }
 
    public function get_array($query_id="") {        
        if( $query_id == "" ) {            
            $query_id = $this->query_id;
        }
        return mysqli_fetch_array($query_id);
    }
 
    public function super_query($query, $multi="false") {        
        if( !$multi ) {            
            $this->query($query);
            $data = $this->get_row();
            $this->free();
            return $data;
        }
        $this->query($query);
        $rows = array();
        while( $row = $this->get_row() ) {            
            $rows[] = $row;
        }
        $this->free();
        return $rows;
    }
 
    public function free($query_id="") {        
        if( $query_id == "" ) {            
            $query_id = $this->query_id;
        }
        @mysqli_free_result($query_id);        
    }
 
    public function num_rows($query_id="") {        
        if( $query_id == "" ) {            
            $query_id = $this->query_id;
        }
        return mysqli_num_rows($query_id);
    }
 
    public function insert_id() {        
        return mysqli_insert_id($this->db_id);
    }
 
    public function safesql($source) {        
        if( !$this->db_id ) {            
            $this->connect(DBUSER, DBPASS, DBNAME, DBHOST);
        }
        if( $this->db_id ) {            
            return mysqli_real_escape_string($this->db_id, $source);
        }
        return addslashes($source);
    }
 
    public function get_real_time() {       
        list($seconds, $microSeconds) = explode(" ", microtime());        
        return ( (double) ($seconds) + (double) ($microSeconds) );
    }
 
    public function display_error($error, $error_num, $query="") {        
        if( $query ) {            
            $query = preg_replace("/([0-9a-f]){32}/", "********************************", $query);
            $query_str = $query;
        }
 
        echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\t\t<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n\t\t<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\t\t<head>\n\t\t<title>MySQL Fatal Error</title>\n\t\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" />\n\t\t<style type=\"text/css\">\n\t\t<!--\n\t\tbody {\n\t\t\tfont-family: Verdana, Arial, Helvetica, sans-serif;\n\t\t\tfont-size: 10px;\n\t\t\tfont-style: normal;\n\t\t\tcolor: #000000;\n\t\t}\n\t\t-->\n\t\t</style>\n\t\t</head>\n\t\t<body>\n\n\t\t\t\t<strong>" . $error . "</strong>\n\n\t\t\t\t<br />\n\t\t\t\n\t\t\t<textarea name=\"\" rows=\"10\" cols=\"52\" wrap=\"virtual\">" . $query_str . "</textarea><br />\n\n\t\t</body>\n\t\t</html>";
        exit ( "MySQli Error!" );
    }
 
}
0
 Аватар для megaguru
16 / 16 / 1
Регистрация: 12.11.2012
Сообщений: 193
13.11.2012, 13:26
Цитата Сообщение от aleks870 Посмотреть сообщение
@ob_start(); @session_start(); error_reporting(E_ALL); ini_set('error_reporting', E_ALL);
Я опять же по поводу кода выскажусь:

1. Никогда не скрывайте ошибки оператором @ - потом их гораздо труднее отловить.
2. ini_set() и error_reporting() у вас выполняют одну и ту же функцию. В данном случае логично выбрать что-то одно.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
13.11.2012, 17:41
Цитата Сообщение от aleks870 Посмотреть сообщение
Я только в одном месте нашел
Ну вот, имя класса скопируйте туда, куда я указал. Имя класса, как видите "db".
0
 Аватар для megaguru
16 / 16 / 1
Регистрация: 12.11.2012
Сообщений: 193
13.11.2012, 17:45
Вы раньше указали код
PHP
1
2
3
4
5
public function connect($db_user, $db_pass, $db_name, $db_location="localhost", $show_error=1) {       
        $db_location = explode(":", $db_location);
        if( isset( $db_location[1] ) ) {            
            $this->db_id = @mysqli_connect($db_location[0], $db_user, $db_pass, $db_name, $db_location[1]);
        }
а у вас:
PHP
1
$mcache->connect('localhost', 11211);
Будет ошибка на этом этапе, поскольку аргументов не хватает при вызове функции.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
13.11.2012, 18:00
Цитата Сообщение от megaguru Посмотреть сообщение
Будет ошибка на этом этапе, поскольку аргументов не хватает при вызове функции.
megaguru, хватает . Т.к. два последних параметра по умолчанию будут "localhost" и "1"? их не обязательно указывать.

Добавлено через 1 минуту
А, да точно. Там же пять параметорв, а не четыре.
0
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 8
13.11.2012, 18:01  [ТС]
Мне значит вместо $mcache->connect('localhost', 11211); что нужно указать?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
13.11.2012, 18:04
Укажите три обязательных параметра при вызове функции: имя пользователя, пароль пользователя БД, имя БД! Ну, и выше мои посты смотрите.
0
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 8
13.11.2012, 18:41  [ТС]
Как мне лучше написать?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
13.11.2012, 18:57
Цитата Сообщение от aleks870 Посмотреть сообщение
Как мне лучше написать?
В смысле как? Впишите туда данные о вашей БД.
0
5 / 5 / 0
Регистрация: 17.11.2012
Сообщений: 55
17.11.2012, 13:55
В общем код расшифровали, причём очень плохо. Из-за этого ошибка. На хостинге не установлен/не настроен мемкеш. Сообщения с кодом прошу удалить, т.к. они нарушают авторские права

Добавлено через 1 минуту
В оригинале кстати первые строчки выглядят так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?PHP
    #########################
    # Автор скрипта: Фальковский Владислав (Scrin), ICQ 20-76-79
    # Версия скрипта: 0.1
    # Оф. сайт: BigCash.Su, Scrin.Name
    # Цена продажи: 50$
    # Написан как копия double-capital.com
    # Затёрто...
    #########################
    
    # Старт буфера
    @ob_start();
    
    #Выполняем запуск сесии
    @session_start();
Добавлено через 33 секунды
Цитата Сообщение от megaguru Посмотреть сообщение
1. Никогда не скрывайте ошибки оператором @ - потом их гораздо труднее отловить.
2. ini_set() и error_reporting() у вас выполняют одну и ту же функцию. В данном случае логично выбрать что-то одно.
Спасибо, доделаем)

Добавлено через 1 минуту
Кстати, авторство заметно даже тут
Цитата Сообщение от aleks870 Посмотреть сообщение
define('SCRIN', true);
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.11.2012, 13:56
Scrin, а кто Вы, собственно говоря, и почему отвечаете в чужой теме как будто это Ваша тема?

Добавлено через 56 секунд
Цитата Сообщение от Scrin Посмотреть сообщение
Кстати, авторство заметно даже тут
ничего там не заметно. То, как я назову константу - не может считаться авторством ни в коей мере
0
5 / 5 / 0
Регистрация: 17.11.2012
Сообщений: 55
17.11.2012, 14:02
Цитата Сообщение от KOPOJI Посмотреть сообщение
Scrin, а кто Вы, собственно говоря, и почему отвечаете в чужой теме как будто это Ваша тема?
Автор скрипта, по которому возникла проблема. Ошибка возникла из-за того,
1) что на хостинге не установлен/не настроен мемкеш
2) плохо расшифрован код

В оригинале это всё выглядит так:
PHP
1
2
3
#мемкеш :)
    $mcache = new memcache;
    $mcache->connect('localhost', 11211);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.11.2012, 14:02
Помогаю со студенческими работами здесь

Fatal error: Call to a member function fetch_assoc() on a non-object
Искал, ничего не нашел, решил написать, есть код для поиска по базе, если вводить в поле 1 слово, без проблем ищет, если вводить 2 через...

Fatal error: Call to a member function query() on a non-object in
страница выдает вот такую ошибку Fatal error: Call to a member function query() on a non-object in...

Fatal error: Call to a member function query() on a non-object
class users extends modules public function AddUser($login, $password, $ban) { return $this-&gt;mysqli-&gt;query(&quot;INSERT INTO...

Реализация поиска: Fatal error: Call to a member function fetch_assoc() on a non-object in
не работает реализация поиска выдает ошибку Fatal error: Call to a member function fetch_assoc() on a non-object in &lt;?php ...

Fatal error: Call to a member function query() on a non-object in db.php on line 23
Все привет. Я только учусь делать сайты с помщью ООП и паттерна mvc. Вот мой файл db.php, браузер ругается на 23 строку. &lt;?php ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru