Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Fatal error: Call to a member function close()
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Fatal error: Call to a member function close()

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

1. SOCIALIST - 26 Февраля, 2015 - 18:31:56 - перейти к сообщению
Здравствуйте, такая проблема, недавно начал совсем небольшой проект на PHP, решил писать на ООП и в качестве драйвера выбрать mysqli.
Все шло хорошо, однако возникла хоть и небольшая, но так и не поддающаяся решению проблема: есть у меня класс db, в нем функция query,
код:
Спойлер (Отобразить)

$close раньше не было, я ее добавил потом, для того, чтобы решить проблему, но ничего не вышло.
Суть: когда я в соседнем классе в функции вызываю $q=$db->query("SELECT ...");, а затем пишу
PHP:
скопировать код в буфер обмена
  1.         if($q->num_rows==1)
  2.                 {      
  3.                         $q->close();
  4.                         return true;
  5.                 }
- все отлично работает, а вот $q=$db->query("UPDATE..."); $q->close(); вызывает ошибку Fatal error: Call to a member function close() on a non-object in путь on line строка.
Тоже самое случится, если написать $q=$db->query("UPDATE ...",true);.
При этом, если запрос не закрывать - все отлично работает, но так не хорошо же...
Тоже самое в функциях с DELETE и INSERT.
В общем, прошу вашей помощи, т.к. думаю над этим уже несколько часов...
Заранее спасибо.
P.S. Про prepare знаю, не использую из соображений привычки.
2. Мелкий - 26 Февраля, 2015 - 19:17:47 - перейти к сообщению
Так и не должно быть никакого объекта.

http://php.net/manual/en/mysqli.query.php
Цитата:
For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.
3. SOCIALIST - 26 Февраля, 2015 - 20:26:12 - перейти к сообщению
Мелкий пишет:
Так и не должно быть никакого объекта.

http://php.net/manual/en/mysqli.query.php
Цитата:
For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.
То есть закрывать ничего не надо? Вот я идиот, сразу не додумался внимательно доку прочитать. Спасибо большое. Не хватает сообщений для повышения репутации, к сожалению...

 

Powered by ExBB FM 1.0 RC1