С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/43: Рейтинг темы: голосов - 43, средняя оценка - 4.93
Почетный модератор
 Аватар для Humanoid
11554 / 4349 / 452
Регистрация: 12.06.2008
Сообщений: 12,453

Узнать номер строки основного скрипта

14.01.2009, 18:43. Показов 8555. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть скрипт index.php
Есть скрипт mysql.php, в котором описан класс для работы с MySQL.
В index.php я подключаю mysql.php:
require_once "mysql.php"
и могу выполнять запросы. Но если запрос не удался, то вывожу сообщение об ошибке.
Подскажите, как мне в этом сообщении указать номер строки основного скрипта (index.php), где запрос не удался?
Например, содержимое index.php:
PHP
1
2
3
4
<?php
$DB = new MySQLDB("127.0.0.1","login","pas","base");
$DB->query("SELECT * FROM tab1;"); // строка №3
?>
А содержимое mysql.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MySQLDB
{
........
........
  public function query($s)
  {
    if (!($this->resid = @mysql_query($s,$this->sqlid)))  // допустим, это строка №44
    {
      echo "Не удалось отправить запрос MySQL на строке ".__LINE__;
      exit;
    }
  }
.......
.......
}
При этом он укажет, что ошибка на строке 46, т.к. __LINE__ вернёт номер строки в текущем файле. А как мне заставить его указать 3 строку (файла index.php, из которого идёт обращение к функции) ?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.01.2009, 18:43
Ответы с готовыми решениями:

Как узнать номер следующей строки в DataGridView и вывести номер в textbox
Допустим у нас есть таблица и в ней заполнено две строки, тогда в текстбоксе мы должны получить номер 3.

Как узнать номер строки без проверки каждой строки
Можно ли как-то узнать номер строки в которой содержится определённый символ без for-сирования? То есть без проверки каждой строки. ...

Функцию узнающая текущий номер строки скрипта.
Кто предложит функцию узнающую текущий номер строки скрипта!!! У меня есть 1000 вызовов одной и той-же функции. Чтобы знать откуда...

7
 Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
14.01.2009, 19:14
хмм.. думаю так неполучится, только если так:
$DB->query("SELECT * FROM tab1;", __LINE__); // строка №3
неудобно правда

зы: одновременно одно и то же накатали
1
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
14.01.2009, 19:14
а вскидку приходит в голову способ, передавать в функцию query не только запрос но и строку из которой он был вызван, и уже внутри функции брать её +) (собственно второй аргумент добавить и в него __LINE__ вставить )

З.Ы. вероятно есть более элегантный и быстродейственный(мы теряем быстродействие т.к. каждый раз при запросе будем узнавать строчку, вместо того, чтобы узнавтаь её только при ошибке) способ, но мне на вскидку только такой вариант в голову пришёл +)))

Добавлено через 46 секунд
ыыы=)) собсвенно то же самое что и GаlаX-у мне в голову пришло +))
1
Почетный модератор
 Аватар для Humanoid
11554 / 4349 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
14.01.2009, 21:42  [ТС]
Жаль. А то бывает много запросов... и во время ошибки приходится долго искать, который запрос неправильный. Лишний параметр тоже не хотелось бы передавать... ладно, там видно будет. Можно будет его сделать не обязательным и передавать его только в сложных местах. Спасибо за помощь.
0
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 6
26.07.2010, 10:44
По моему правильнее будет так

PHP
1
2
3
4
5
6
<?php
$DB = new MySQLDB("127.0.0.1","login","pas","base");
if(!$DB->query("SELECT * FROM tab1;"){
%сообщение об ошибке%
exit;}
?>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class MySQLDB
{
........
........
  public function query($s)
  {
    if (!($this->resid = @mysql_query($s,$this->sqlid)))  // допустим, это строка №44
    {
      return false;
    }
  }
.......
.......
}
А еще можно глобальный массив ошибок создать и заносить в него случившиеся ошибки, тогда ты сможешь отследить, историю ошибок
1
Почетный модератор
 Аватар для Humanoid
11554 / 4349 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
26.07.2010, 11:24  [ТС]
Alzasr, лишнее действие в каждом скрипте. Мне так лениво делать
0
Благотворец
 Аватар для arvitaly
142 / 122 / 13
Регистрация: 29.04.2009
Сообщений: 537
26.07.2010, 22:29
Лучший ответ Сообщение было отмечено как решение

Решение

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MySQLDB
{
........
........
  public function query($s)
  {
    if (!($this->resid = @mysql_query($s,$this->sqlid)))  // допустим, это строка №44
    {
         list ($di) = debug_backtrace();
         die ("Ошибка произошла в файле - " . $di["file"] . ", в строке - " .  $di["line"]);
    }
  }
.......
.......
}
3
Почетный модератор
 Аватар для Humanoid
11554 / 4349 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
26.07.2010, 22:39  [ТС]
arvitaly, то что надо. Спасибо большое. Очень удобная функция.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.07.2010, 22:39
Помогаю со студенческими работами здесь

Узнать номер строки
Здравствуйте, помогите ,пожалуйста, узнать номер строки, которая включает в себя текст. скачиваю веб страницу: string otvet = new...

Узнать номер строки в txt
Добро всем! :senor: Как узнать номер строки в которой находится искомый текст? Как вывести в Мемо определенную строку из txt зная номер...

Узнать номер строки в datagrid
Здравствуйте! есть на форме datagridview, как мне узнать номер выделенной строчки. Т е я нажимаю на первый столбец первой строки(или на...

Узнать номер строки в ListBox!
у меня есть ListBox там к примеру 50 строчок как проверить если там нажата первая строка выполняеться одно действие если вторая то другое??

Последовательный запуск скриптов из основного скрипта
Уважаемые Повершелисты! Помогите пожалуйста: задача следующая - есть главный скрипт(main) и много других скриптов(run_1, run_2 и т.д.),...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru