Mysqli ошибка запроса не возвращает правильную строку - PullRequest
0 голосов
/ 28 октября 2018

У меня проблема с использованием mysqli ( процедурный стиль ) при возврате номера строки, когда определенный скрипт запускает неправильный / пустой запрос.Я недавно перешел на mysqli из mysql_ functions

Я использую пользовательскую функцию, определенную в файле, включенном во все мои скрипты, для запуска моих запросов.Я также использую глобальную переменную ($ yare_db) для передачи соединения:

function YQUERY($query) {
      global $yare_db;
      $file = basename($_SERVER['SCRIPT_NAME']);
      $result = mysqli_query($yare_db,$query) or die('<strong>Error in query execution. Script: <u>'.$file.'</u> (line <u>'.$line.'</u>)</strong><br /><em>Query:</em> '.$query.'<br /><br /><u>Error</u>:<br />'.mysqli_error($yare_db));
      return $result;
} // END FUNCTION YQUERY

Вы увидите, что переменная $ line не назначена, так как я перенес эту функцию изверсия mysql_ *, где я использовал функцию debug_backtrace, но на самом деле она просто возвращала номер строки служебного файла, в котором определена функция, а не строку сценария, в котором был запущен запрос, что довольно бесполезно, поэтому яотключил его.

Хотя функция basename () правильно возвращает имя скрипта, из которого был запущен запрос, я не нашел способа получить доступ к точной строке, из которой была вызвана функция YQUERY.

Это, конечно, расстраивает, когда у вас есть страница с большим количеством запросов, и вы не видите, какой из них неправильный: (* ​​1014 *

Конечно, я хотел бы найти решение, позволяющее мне изменитьтолько пользовательская функция, не требующая поиска всех вхождений функции и добавления новой переданной переменной (возможно, содержащей магическую константу LINE) из любой строки любого скрипта, где я вызываю функцию YQUERY: /

Может, это сработает?Решение типа:

function YQUERY($query,$line=__LINE__) {
     global $yare_db;
     $file = basename($_SERVER['SCRIPT_NAME']);
     $result = mysqli_query($yare_db,$query) or die('<strong>Error in query execution. Script: <u>'.$file.'</u> (line <u>'.$line.'</u>)</strong><br /><em>Query:</em> '.$query.'<br /><br /><u>Error</u>:<br />'.mysqli_error($yare_db));
     return $result;
} // END FUNCTION YQUERY

?Или я собираюсь получить еще номер строки служебного файла, в котором определена пользовательская функция запроса?

Спасибо за любые предложения.

...