powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Сообщение об ошибке с указанием номера строки.
5 сообщений из 5, страница 1 из 1
Сообщение об ошибке с указанием номера строки.
    #32333055
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот участок кода

Код: plaintext
1.
2.
3.
4.
5.
6.
    $this->result = @mysql_query($query_string, $this->connection);
    if(!$this->result)
    {
      $this->last_error = mysql_error();

      return false;
    }


Возвращаемый текст ошибки например может быть таким

Код: plaintext
Unknown column 'lname' in 'field list'


Который затем соответсвующим образом показывается на клинете. Хотелось бы снабдить это сообщение еще и именем php файла и номером строки. Мой вопрос - есть ли в php функции

1) которая возвращает номер строки в файле где она стоит
2) которая возвращает имя файла где она находится

?
...
Рейтинг: 0 / 0
Сообщение об ошибке с указанием номера строки.
    #32334237
Фотография ©Felix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
данная ошибка приходит не из файла, ето ответ мускла. там нет ни файлов ни строк... ето просто то что возвращаеться в ответ на запрос...
Felix
...
Рейтинг: 0 / 0
Сообщение об ошибке с указанием номера строки.
    #32334542
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы бы лучше по теме подсказали, я ведь не спрашивала откуда он приходит, я задавала вполне конкретный вопрос\r
\r
автор писал:Мой вопрос - есть ли в php функции \r
\r
1) которая возвращает номер строки в файле где она стоит \r
2) которая возвращает имя файла где она находится \r
\r
по второму я нашла $PHP_SELF. По первому пока нет.\r
\r
автор писал:данная ошибка приходит не из файла\r
\r
Я знаю что не из файла но ведь в определенном файле и строке есть вызов этого SQL запроса, это место я и хочу сохранить для будущего отображения сообщения об ошибке. \r
\r
Такое ощущение что вы вопрос совершенно не читаете, например вот здесь вообще написали совершенно не по теме.\r
\r
Выполнение скриптов\r
\r
С чего вы решили что мне надо выполнить запрос, если я спрашивала про выполнение скриптов?
...
Рейтинг: 0 / 0
Сообщение об ошибке с указанием номера строки.
    #32334577
Gt_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt_
Гость
ты не поняла, у тебя просто функция mysql вернула 0 ... для пхп ничего криминального в этом нет, если нала ругатся на уровне пхп нужно самому
http://lv.php.net/manual/en/function.trigger-error.php

даже если можно как-то заставлять ругатся пхп на этот 0, смысла особого такое не имеет, т.к. по нормальному у тебя должен быть свой класс для общения с бд, смысла ругатся на одно и то же место (класс бд) нет ...
тут нужны эксепшены, в 4-ом пхп нет эксепшенов (есть в 5-ом бетта)
...
Рейтинг: 0 / 0
Сообщение об ошибке с указанием номера строки.
    #32334969
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Gt_

trigger-error то что надо, 100%. Спасибо.

автор писал:ты не поняла, у тебя просто функция mysql вернула 0 ... для пхп ничего криминального в этом нет

Именно поэтому я и задала этот вопрос. Когда в приложении 70 php файлов и включаются они динамически в другие фалйы, иногда очень сложно по

Unknown column 'lname' in 'field list'

найти файл и место с неправильным запросом.

С trigger-error все классно получилось. Может кому понадобится, привожу пример

test.php
Код: plaintext
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.
35.
36.
37.
38.
<?php
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
  $_SESSION[ "last_error" ] =
   "Error: "  . $errstr .  "<br>\n"  .
   "In file: "  . $errfile .  "<br>\n"  .
   "In line: "  . $errline .  "<br>\n"  .
   "Engine: "  . PHP_VERSION . " (" . PHP_OS . ")<br>\n" ;
}

set_error_handler( "myErrorHandler" );

$connection = @mysql_connect( "localhost" ,  "root" ,  "");
if(!$connection)
{
  echo mysql_error() . " <br>\n ";
}

if(!@mysql_select_db(" wscheduler ", $connection))
{
  echo mysql_error() . " <br>\n ";
}
$result = @mysql_query(" select id, name from test; ", $connection);
if(!$result)
{
  trigger_error(mysql_error(), E_USER_ERROR);
}
else
{
  while($rw = @mysql_fetch_object($result))
  {
    $_SESSION[" results"][$rw->id] = $rw->name;
  }

  @mysql_free_result($result);
}

@mysql_close($connection);
?>


test2.php
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?php
$_SESSION[ "last_error" ] =  "";
$_SESSION[" results "] = array();

require " test.php ";

if($_SESSION[" last_error "])
{
  echo $_SESSION[" last_error "] . " <br>\n ";
}
else
{
  foreach($_SESSION[" results "] as $id => $name)
  {
    echo $id . " ,  " . $name . " <br>\n";
  }
}
?>



При вызове test2 в случае ошибки в запросе, выдается

Error: Unknown column 'lname' in 'field list'
In file: d:\projects\php\demo\test.php
In line: 26
Engine: 4.3.3 (WINNT)

Еще раз спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Сообщение об ошибке с указанием номера строки.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]