Форумы портала PHP.SU » PHP » Программирование на PHP » Fatal error: Call to a member function result() on a non-object

Страниц (1): [1]
 

1. Champion - 25 Марта, 2010 - 19:29:06 - перейти к сообщению
Есть в PHP оператор ->, при помощи которого мы обращаемся к свойствам и вызываем методы объекта. Вот если этот оператор применить не к объекту, то как раз с такой ошибкой мы и столкнемся.

Если эта ошибка появилась перед вашими глазами, значит, сейчас в той строке, номер которой написан в тексте сообщения об ошибке, не объект. Даже если нам очень хочется, чтоб там был объект и мы всё для этого сделали - ошибка есть и это не объект.

Значит, надо посмотреть, почему это не объект. Возможны вот такие причины:
- Опечатка в имени переменной;
- Между созданием объекта и его использованием чьи-то злые руки написали что-то типа $obj = 5, после чего $obj перестал быть объектом и мы это забыли.
- Третья причина возникает, когда мы не сами создаем объект оператором new, а ссылку на объект возвращает какая-то функция. Причем она не обязательно написанная вами, а может быть это какая-то функция используемого фреймворка или чего-то там еще.
Вот эти функции, при невыполнении некоторых условий, возвращают false или что-то там еще, а не объект. Значит, нужно разбираться уже с этой функцией и смотреть, почему она так себя ведет. Делается это с помощью нехитрых приемов отладки, описанных тут и тут.

Вот.
2. Champion - 28 Марта, 2010 - 09:51:20 - перейти к сообщению
Похожая ошибка Supplied argument is not a valid <какой-нибудь там> resource. Мы тоже вроде бы уверены, что передаем в функцию переменную нужного типа Ресурс, а на самом деле эта переменная почему-то содержит значение другого типа.
причины те же: опечатались, затерли, неудачно получили значение из функции.

Конкретно про борьбу с ресурсом-указателем на результат запроса MySQL тут.
3. JustUserR - 28 Марта, 2010 - 14:22:38 - перейти к сообщению
Champion пишет:
Причины те же: опечатались, затерли, неудачно получили значение из функции.
Неправильный SQL-запрос с синтаксической ошибкой и попытка обрабоать его ресурс через mysql_fetch_* или mysql_result
4. EuGen - 01 Апреля, 2010 - 11:07:14 - перейти к сообщению
И на этот счет есть соответствующая тема в разделе Баз Данных
5. Champion - 01 Апреля, 2010 - 11:19:03 - перейти к сообщению
Ну про ресурс не только к базам данных относится. Много функций с разными ресурсами работают.
6. JustUserR - 02 Апреля, 2010 - 17:32:14 - перейти к сообщению
Champion пишет:
Много функций с разными ресурсами работают.
В таком случае можно добавить ошибку Call to undefined function когда пытаются вызвать функцию из неподключенного модуля Улыбка
7. Champion - 02 Апреля, 2010 - 18:49:28 - перейти к сообщению
Да на самом деле одной статьи про отладку достаточно))
8. Comatose - 24 Мая, 2011 - 12:38:01 - перейти к сообщению
А если ну очень злые руки написали где-то __call() или __get() ? Улыбка
9. yaskin - 26 Сентября, 2011 - 21:19:18 - перейти к сообщению
не извращайтесь. Поменяйте кодировку файла на utf8 и радуйтесь. Скорее всего при редактировании сохранили файл не в той кодировке
10. LIME - 26 Сентября, 2011 - 21:32:28 - перейти к сообщению

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

 

Powered by ExBB FM 1.0 RC1