Уровни ошибок и ошибки на какой линии? - PullRequest
0 голосов
/ 19 июля 2009

У меня есть скрипт PHP vieworder.php, который включает другие скрипты вверху.

<?php
include "../includes/config.php";
include "../includes/session.php";
include "../includes/functions.php";
//...
?>

Я получаю сообщение об ошибке на этом сценарии PHP. Это говорит мне это:

Warning: mysql_num_rows(): supplied argument ... in vieworder.php on line 185

Нужно ли ссылаться только на строку 185 этого скрипта vieworder.php или мне нужно учитывать включенные скрипты? Я предполагаю последнее?

Кроме того, когда он говорит «Предупреждение» - могу ли я его игнорировать? Или это то, что меня должно беспокоить?

Я заметил, что эта ошибка вызывает у меня другие ошибки, такие как:

Warning: Division by zero in ... vieworder.php on line 340

Я предполагаю, потому что было возвращено 0 строк.

Извиняюсь, за этот грязный вопрос, но я нуб, и все взаимосвязано.

Обновление

Так что все могут видеть это:

Первое вхождение mysql_num_rows () в vieworder.php - строка 235. В строке 185 есть пустая строка, а до этого до самого верха есть только 1 mysql_query? !!

Обновление 2

Я на самом деле поставлю это в другом вопросе.

Ответы [ 5 ]

2 голосов
/ 19 июля 2009
Warning: mysql_num_rows(): supplied argument ... in vieworder.php on line 185

Означает, что вы должны искать ошибку в строке 185 в файле vieworder.php, а не в каком-либо из включенных файлов.

Предупреждения можно игнорировать, но это редко хорошая идея, они есть по какой-то причине.

1 голос
/ 19 июля 2009

Предоставленный аргумент не является допустимым ресурсом результата MySQL часто вызывается предыдущим запросом MySQL, который по какой-то причине не выполнен и mysql_query вернул false вместо ресурса MySQL.

Поэтому вы можете проверить, был ли запрос успешным (см. mysql_error и mysql_errno), прежде чем что-либо делать с этим ресурсом MySQL.

0 голосов
/ 19 июля 2009

Также, когда написано «Предупреждение», могу ли я в значительной степени игнорировать это? Или это что-то я должен быть очень обеспокоен с

Пока вы получаете какую-либо "ошибку", будь то "ошибка", "предупреждение" или даже "уведомление", вы не должны игнорировать ее:

  • если вы получаете какую-то "ошибку", это может означать, что у вас есть более серьезная ошибка в другом месте
    • например, первое публикуемое вами предупреждение может означать, что ваш запрос SQL не выполнен
  • каждая «ошибка» имеет определенную стоимость на производительность / скорость

Если вы можете, вы всегда должны разрабатывать, используя E_ALL уровень отчетности; и отображение ошибок, чтобы помочь вам увидеть их. Это можно настроить через php.ini:

error_reporting = E_ALL
display_errors = On
html_errors = On

С другой стороны, в вашей производственной среде вы никогда не увидите ошибок; но вы должны записать их в файл (и иногда проверять этот файл). В вашем файле php.ini:

display_errors = Off

; Besides displaying errors, PHP can also log errors to locations such as a
; server-specific log, STDERR, or a location specified by the error_log
; directive found below. While errors should not be displayed on productions
; servers they should still be monitored and logging is a great way to do that.
; Default Value: Off
; Development Value: On
; Production Value: On
; http://php.net/log-errors
log_errors = On

; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
error_log = php_errors.log

Некоторые из них можно настроить во время выполнения с помощью ini_set, кстати.

0 голосов
/ 19 июля 2009

Ошибка, которую вы получаете:

Warning: mysql_num_rows(): supplied argument ... in vieworder.php on line 185

на самом деле очень специфично. Вам не нужно принимать во внимание что-либо еще. Если вы проверяете vieworder.php, существует проблема с кодом в строке 185. Один из аргументов, передаваемых в mysql_num_rows(), недопустим, и хотя он может работать, вы, вероятно, получите плохие результаты, поэтому Вы должны посмотреть на это.

Устранение первой проблемы, вероятно, также поможет устранить проблемы и дальше.

0 голосов
/ 19 июля 2009

"в vieworder.php в строке 185" означает "строку 182 файла vieworder.php".
В большинстве случаев вы не должны игнорировать предупреждения. В этом случае это, скорее всего, означает, что предыдущий mysql_query () не удался, и у вас нет действительного набора результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...