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

Помошь в поимке ошибки Fatal error: Call to a member function fetch_assoc() on a non-object in

13.08.2013, 00:12. Показов 22555. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не пойму где закралась ошибка, понятно что что-то не то с определением объекта, но вот глаз замылился и не могу найти где:
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
function search ($findtext)
{
$findtext = htmlspecialchars($findtext);
if ($findtext === "")return false;
$query_search = "";
 
$arreyfindtext = explode(" ", $findtext);
foreach($arreyfindtext as $key => $value)
    {
        if (isset($arreyfindtext[$key - 1]))
        $query_search .= ' OR ';
    $query_search .='`nomer_dog` LIKE "%'.$value.'%" OR `adres_ob` LIKE "%'.$value.'%"';
 
    }
    $query = "SELECT * FROM body WHERE $query_search";
    echo $query;
    $mysqli = new mysqli("localhost", "root", "motorola", "avans");
    $result_set = $mysqli->query($query);
    $mysqli->close();
    $i = 0;
    while ($row = $result_set->fetch_assoc()){
    $results[$i] = $row;
    $i++;
    }
return $results;
}
if (isset($_POST['poisk']))//Если нажата кнопка поиска
{
    $findtext = $_POST['find'];//пересылаемый текст запроса
    $results = search($findtext);
    print_r($results);
}
Поля такие в таблице существуют.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.08.2013, 00:12
Ответы с готовыми решениями:

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

Реализация поиска: 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 <?php ...

выводит ошибку Fatal error: Call to a member function fetch_assoc() on a non-object in Z:\home\veterinar.com\www\obzor.php on line 5
<?php require_once('header.php'); function printResultSet($result_set) { echo "Количество...

16
 Аватар для Dealiss
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
13.08.2013, 00:28
А ресурс передавать не надо разве?
PHP
1
$result_set->fetch_assoc()
0
1 / 1 / 0
Регистрация: 26.07.2013
Сообщений: 35
13.08.2013, 00:41  [ТС]
Dealiss, прости великодушно не понял. Ругается на 22 строку.
0
 Аватар для Dealiss
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
13.08.2013, 00:46
PHP
1
$result_set->fetch_assoc($result_set)
0
1 / 1 / 0
Регистрация: 26.07.2013
Сообщений: 35
13.08.2013, 00:49  [ТС]
Код исправил, ошибка таже.
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
function search ($findtext)
{
$findtext = htmlspecialchars($findtext);
if ($findtext === "")return false;
$query_search = "";
 
$arreyfindtext = explode(" ", $findtext);
foreach($arreyfindtext as $key => $value)
    {
        if (isset($arreyfindtext[$key - 1]))
        $query_search .= ' OR ';
    $query_search .='`nomer_dog` LIKE "%'.$value.'%" OR `adres_ob` LIKE "%'.$value.'%"';
 
    }
    $query = "SELECT * FROM body WHERE $query_search";
    $mysqli = new mysqli("localhost", "root", "motorola", "avans");
    $result_set = $mysqli->query($query);
    $mysqli->close();
    $i = 0;
    while ($row = $result_set->fetch_assoc($result_set)){
    $results[$i] = $row;
    $i++;
    }
return $results;
}
if (isset($_POST['poisk']))//Если нажата кнопка поиска
{
    $findtext = $_POST['find'];//пересылаемый текст запроса
    $results = search($findtext);
    print_r($results);
}
0
 Аватар для Dealiss
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
13.08.2013, 00:50
опять на 22 строку?
0
1 / 1 / 0
Регистрация: 26.07.2013
Сообщений: 35
13.08.2013, 00:51  [ТС]
Dealiss, на 21 теперь ругается, я убрал проверочный вывод в 17 строке echo $query;, что за проблема, может в запросе что, вроде все верно.
0
 Аватар для Dealiss
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
13.08.2013, 00:53
Возвращай обратно
PHP
1
$result_set->fetch_assoc()
Перемести в конец файла:
PHP
1
$mysqli->close();
0
1 / 1 / 0
Регистрация: 26.07.2013
Сообщений: 35
13.08.2013, 00:57  [ТС]
Та же ошибка, как поэтапно отловить?
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
function search ($findtext)
{
$findtext = htmlspecialchars($findtext);
if ($findtext === "")return false;
$query_search = "";
 
$arreyfindtext = explode(" ", $findtext);
foreach($arreyfindtext as $key => $value)
    {
        if (isset($arreyfindtext[$key - 1]))
        $query_search .= ' OR ';
    $query_search .='`nomer_dog` LIKE "%'.$value.'%" OR `adres_ob` LIKE "%'.$value.'%"';
 
    }
    $query = "SELECT * FROM body WHERE $query_search";
    echo $query;
    $mysqli = new mysqli("localhost", "root", "motorola", "avans");
    $result_set = $mysqli->query($query);
    $i = 0;
    while ($row = $result_set->fetch_assoc()){
    $results[$i] = $row;
    $i++;
    }
return $results;
}
if (isset($_POST['poisk']))//Если нажата кнопка поиска
{
    $findtext = $_POST['find'];//пересылаемый текст запроса
    $results = search($findtext);
    print_r($results);
}
$mysqli->close();
0
 Аватар для Dealiss
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
13.08.2013, 01:02
Если здесь ничего нету $result_set, тогда у тебя ошибка в mysql

Добавлено через 1 минуту
Должно вывести ошибку
PHP
1
$result_set = $mysqli->query($query) or die(mysql_error());
0
1 / 1 / 0
Регистрация: 26.07.2013
Сообщений: 35
13.08.2013, 01:05  [ТС]
Ошибку не выводит, выводит сам запрос:
SELECT * FROM body WHERE `nomer_dog` LIKE "%тест%" OR `adres_ob` LIKE "%тест%" OR `nomer_dog` LIKE "%поиска%" OR `adres_ob` LIKE "%поиска%"
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
function search ($findtext)
{
$findtext = htmlspecialchars($findtext);
if ($findtext === "")return false;
$query_search = "";
 
$arreyfindtext = explode(" ", $findtext);
foreach($arreyfindtext as $key => $value)
    {
        if (isset($arreyfindtext[$key - 1]))
        $query_search .= ' OR ';
    $query_search .='`nomer_dog` LIKE "%'.$value.'%" OR `adres_ob` LIKE "%'.$value.'%"';
 
    }
    $query = "SELECT * FROM body WHERE $query_search";
    echo $query;
    $mysqli = new mysqli("localhost", "root", "motorola", "avans");
    $result_set = $mysqli->query($query) or die(mysql_error());
    $i = 0;
    while ($row = $result_set->fetch_assoc()){
    $results[$i] = $row;
    $i++;
    }
return $results;
}
if (isset($_POST['poisk']))//Если нажата кнопка поиска
{
    $findtext = $_POST['find'];//пересылаемый текст запроса
    $results = search($findtext);
    print_r($results);
}
$mysqli->close();
0
 Аватар для Dealiss
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
13.08.2013, 01:16
$mysqli->error - это показывает ошибку
Возвращай обратно:
PHP
1
$result_set = $mysqli->query($query)
Составь условие после:
PHP
1
2
3
4
$result_set = $mysqli->query($query)
//
if(!$mysqli->query($query))
     echo $mysqli->error;
0
1 / 1 / 0
Регистрация: 26.07.2013
Сообщений: 35
13.08.2013, 01:20  [ТС]
Так уже ближе:
SELECT * FROM body WHERE `nomer_dog` LIKE "%тест%" OR `adres_ob` LIKE "%тест%" OR `nomer_dog` LIKE "%поиска%" OR `adres_ob` LIKE "%поиска%"Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation 'like'
Fatal error: Call to a member function fetch_assoc() on a non-object in D:\server\www\avans\find.php on line 26

Похоже что-то с кодировкой не то:
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
function search ($findtext)
{
$findtext = htmlspecialchars($findtext);
if ($findtext === "")return false;
$query_search = "";
 
$arreyfindtext = explode(" ", $findtext);
foreach($arreyfindtext as $key => $value)
    {
        if (isset($arreyfindtext[$key - 1]))
        $query_search .= ' OR ';
    $query_search .='`nomer_dog` LIKE "%'.$value.'%" OR `adres_ob` LIKE "%'.$value.'%"';
 
    }
    $query = "SELECT * FROM body WHERE $query_search";
    echo $query;
    $mysqli = new mysqli("localhost", "root", "motorola", "avans");
    $result_set = $mysqli->query($query);
    if(!$mysqli->query($query))
     echo $mysqli->error;
    $i = 0;
    while ($row = $result_set->fetch_assoc()){
    $results[$i] = $row;
    $i++;
    }
return $results;
}
if (isset($_POST['poisk']))//Если нажата кнопка поиска
{
    $findtext = $_POST['find'];//пересылаемый текст запроса
    $results = search($findtext);
    print_r($results);
}
$mysqli->close();
0
 Аватар для Dealiss
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
13.08.2013, 01:24
Не-а...
"Fatal error: Call to a member function fetch_assoc() on a non-object" - "обращение к функции fetch_assoc() без объекта"
0
1 / 1 / 0
Регистрация: 26.07.2013
Сообщений: 35
13.08.2013, 01:27  [ТС]
Dealiss, а это не может повлиять Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation 'like?
0
 Аватар для Dealiss
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
13.08.2013, 01:36
GORKOMXO3, ну я не силен в MySQL. Но точно могу сказать, что ошибка в не верно составленном запросе.
0
1 / 1 / 0
Регистрация: 26.07.2013
Сообщений: 35
13.08.2013, 12:19  [ТС]
Запрос если напрямую к базе пременить отрабатывает нормально, возможно скрипт отправляет весь запрос в неверной кодировке, но тоже сомнительно.

Добавлено через 8 часов 51 минуту
Вопрос точно в кодировки передачи запроса, так как если я в переменную $findtext подставляю не строку а цыфры, скрипт отрабатывает, но вот вывод из базы на кирилице заменяется на ??????:
SELECT * FROM body WHERE `nomer_dog` LIKE "%1-13-302%" OR `adres_ob` LIKE "%1-13-302%"Array ( [0] => Array ( [id] => 143 [nomer_p_p] => 124 [rieltor] => ????????? ?.?. [nomer_dog] => 1-13-302-004 [data_dog] => 05-08-2013 [adres_ob] => ????????????, 17?-24 [fio_prod] => ????? ????????? ????????, ?????? ?????? ??????? [fio_pokup] => ???????? ?????? ?????????? [cena_ob] => 3060000 [srok_dog] => 01-09-2013 [d_sog_o_chem] => [d_sog_blank] => [d_sog_data] => [av_fl_blank] => [av_fl_data] => [av_fl_summa] => [av_fl_srok] => [av_fl_pokup] => [av_vladis_blank] => [vid_avans] => [data_polu_avans] => [period_avans] => [summa_avans] => [av_vladis_pokup] => [data_kassa] => [go_avans] => [rielt_pokup] => [pdkp_data] => [pdkp_srok] => [pdkp_av_summa] => [pdkp_zk_summa] => [uved_srok] => [uved_ok] => [dkp_data] => 15-08-2013 [dkp_c_offic] => 3060000 [dkp_c_real] => 3060000 [srok_osv] => [data_pered] => 25-08-2013 [data_avr] => [numer_avr] => [data_komis] => [arhiv] => [ras_ok] => [jurist_off] => [komiss] => 60000 [prim] => [global_data] => 08.2013 [ofis] => dobroe [color] => #57BFFD [tim_dat] => 2013-08-11 03:07:21 [ins_avtor] => ??????? ?.?. [last_autor] => ) [1] => Array ( [id] => 132 [nomer_p_p] => 114 [rieltor] => ????????? ?.?. [nomer_dog] => 1-13-302-004 [data_dog] => 05-08-2013 [adres_ob] => ????????????, ?. 17-?, ??. 24 [fio_prod] => ?????? ?????? ??????? ????? ????????? ???????? [fio_pokup] => [cena_ob] => 3060000 [srok_dog] => 01-09-2013 [d_sog_o_chem] => [d_sog_blank] => [d_sog_data] => [av_fl_blank] => [av_fl_data] => [av_fl_summa] => [av_fl_srok] => [av_fl_pokup] => [av_vladis_blank] => ?146 [vid_avans] => ?? ???????????? ??? ???????? (?? ???????) [data_polu_avans] => 05-08-2013 [period_avans] => 01-09-2013 [summa_avans] => 50000 [av_vladis_pokup] => ???????? ?????? ?????????? [data_kassa] => [go_avans] => [rielt_pokup] => [pdkp_data] => [pdkp_srok] => [pdkp_av_summa] => [pdkp_zk_summa] => [uved_srok] => [uved_ok] => [dkp_data] => [dkp_c_offic] => [dkp_c_real] => [srok_osv] => [data_pered] => [data_avr] => [numer_avr] => [data_komis] => [arhiv] => [ras_ok] => [jurist_off] => [komiss] => 60000 [prim] => [global_data] => 08.2013 [ofis] => dobroe [color] => [tim_dat] => 2013-08-05 18:08:21 [ins_avtor] => ??????? ?.?. [last_autor] => ) )
Как это исправить, остальные скрипты, которые обращаются к этой базе и вытаскивают результаты, отрабатывают нормально.

Добавлено через 1 час 47 минут
Решил вопрос, костыли конечно, но проблема была в кодировки указал явно в какой передавать в базу:
PHP
1
2
3
4
5
$query = "SELECT * FROM body WHERE $query_search";
    echo $query;
    $mysqli = new mysqli("localhost", "root", "motorola", "avans");
    mysqli_query($mysqli,"SET NAMES cp1251");
    $result_set = $mysqli->query($query);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2013, 12:19
Помогаю со студенческими работами здесь

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

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

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

Fatal error: Call to a member function connect() on a non-object in
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...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru