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 :: Версия для печати :: Warning: mysql_error() expects parameter 1 to be resource, integer given in
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Warning: mysql_error() expects parameter 1 to be resource, integer given in

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

1. Tka4illa - 16 Октября, 2019 - 10:31:36 - перейти к сообщению
Локальный рабочий сайт. Все работало до поры-до времени, пока по неизвестным причинам не появилась ошибка:
Warning: mysql_error() expects parameter 1 to be resource, integer given in //далее прописан путь с указанием на РНР файл страницы, а так же, указана строка, в ходе выполнения которой произошел данный сбой.
В ходе размышлений, а так же посещений различных обучающих ресурсов было установлено, что в данной функции происходит обращение в базу данных, берутся данные, а потом выводятся таблицей.
Ниже прикреплен, кусок соответствующего РНР кода:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //вывести содержимое таблицы
  3.         $gurnal=mysql_query("SELECT GurnalRn.Id, CompanyName, Comment, Date, Rn, Nn, CompanyNameAlt
  4.                           FROM GurnalRn, Firm
  5.                           WHERE Date >= '2015-01-01' and Firm.Id = FirmId and Rn > 0
  6.                           ORDER BY Date DESC, Rn DESC
  7.                           LIMIT 0, 1000") or die (mysql_error(1));
  8.         while($arr=mysql_fetch_array($gurnal))  {
  9.                 if ($arr['CompanyNameAlt']) {$arr['CompanyName'] = $arr['CompanyNameAlt'];}
  10.                 echo "
  11.                         <tr style='color:#000000;'>
  12.                                 <td>$arr[Date]</td>
  13.                                 <td>$arr[Rn]</a></td>
  14.                                 <td>$arr[CompanyName] $arr[Comment]</td>
  15.                                 <td>$arr[Nn]</td>
  16.                                 <td><a href = edit_gurnal.php?EditRnId=$arr[0]><img src = 'edit.png'></a></td>
  17.                                 <td><a href = gurnal.php?DellRnId=$arr[0]><img src = 'del.png'></a></td>
  18.                         </tr>
  19.                 ";
  20.         }
  21. ?>

Собственно, вопрос: где вообще копать, что это может быть? При том, что раньше все работало нормально, и отображалось корректно.
Дополнительно отмечу, что в ручную лазил в БД, и удалял последнюю запись в таблице GurnalRn, которая содержала в себе пустые типы(NULL) вместо каких либо записей. Но почему-то ахтунг возник с претензией именно на Integer.
Кто сможет мне объяснить, что вообще от меня требует это предупреждение и где искать загвоздку?
2. LIME - 16 Октября, 2019 - 11:07:45 - перейти к сообщению
Tka4illa пишет:
or die (mysql_error(1));
что за 1?
Просто удалить 1. Как-то она там все-таки появилась.
http://www.php.su/mysql_error
3. Tka4illa - 16 Октября, 2019 - 11:11:26 - перейти к сообщению
LIME пишет:
Tka4illa пишет:
or die (mysql_error(1));
что за 1?
Просто удалить 1. Как-то она там все-таки появилась.
http://www.php.su/mysql_error


Ну, раньше ведь с этой еденицей все работалоУлыбка
4. Строитель - 16 Октября, 2019 - 11:31:34 - перейти к сообщению
Tka4illa пишет:
раньше ведь с этой еденицей все работало
Раньше работало потому, что выполнение скрипта не доходило до правой части этого выражения
PHP:
скопировать код в буфер обмена
  1. // т.е. сюда     ^^^^^^^^^^^^^^^^^^^^
А теперь запрос из левой части этого выражения ( т.е. функция mysql_query() ) возвращает false, и вы получаете результат работы с ошибкой, т.к. передаваемый тип аргумента (integer) не поддерживается функцией mysql_query(). Если удалить единицу, то вы увидите текст ошибки из БД.
5. Tka4illa - 16 Октября, 2019 - 12:02:52 - перейти к сообщению
Строитель пишет:
Tka4illa пишет:
раньше ведь с этой еденицей все работало
Раньше работало потому, что выполнение скрипта не доходило до правой части этого выражения
PHP:
скопировать код в буфер обмена
  1. // т.е. сюда     ^^^^^^^^^^^^^^^^^^^^
А теперь запрос из левой части этого выражения ( т.е. функция mysql_query() ) возвращает false, и вы получаете результат работы с ошибкой, т.к. передаваемый тип аргумента (integer) не поддерживается функцией mysql_query(). Если удалить единицу, то вы увидите текст ошибки из БД.


Огромное вам спасибо за подробное и понятное объяснение. Удалил еденицу, и все заработало.
(Добавление)
LIME пишет:
Tka4illa пишет:
or die (mysql_error(1));
что за 1?
Просто удалить 1. Как-то она там все-таки появилась.
http://www.php.su/mysql_error


Огромное спасибо вам за совет. Все заработало.
6. Строитель - 16 Октября, 2019 - 12:05:07 - перейти к сообщению
Tka4illa пишет:
Удалил еденицу, и все заработало.
Вам об этом выше по тексту уже говорили
LIME пишет:
Просто удалить 1
Закатив глазки
7. LIME - 16 Октября, 2019 - 14:24:10 - перейти к сообщению
Tka4illa пишет:
Огромное спасибо вам за совет. Все заработало.
я бы не спешил
возможно был изменен уровень отображения ошибок
Warning это такой уровень на котором все худобедно может работать. Возможно раньше этот уровень просто не отображался. Если так, то могут повылазить другие ошибки и особенно это чувствительно в ajax запросах(которые в фоне выполняются без перегрузки страницы). По хорошему их все бы отловить и исправить, но можно просто вернуть прежний уровень ошибок и жить дальше без новых отказов в функционале просто зная что в коде есть ошибки и оно вообще плохо написано и устарело(это так).
(Добавление)
Строитель пишет:
т.к. передаваемый тип аргумента (integer) не поддерживается функцией mysql_query()
не в нее инт передается а в еррор...короче непонятно
это еще если поверить что ничего не менялось
наверняка нет никакого контроля версий так что все со слов тс
чего они там делали им только ведомо и возможно сами не заметили/забыли

 

Powered by ExBB FM 1.0 RC1