У меня проблема с использованием 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
?Или я собираюсь получить еще номер строки служебного файла, в котором определена пользовательская функция запроса?
Спасибо за любые предложения.