$connectionInfo = array( "Database"=>"name", "UID"=>"login", "PWD"=>pass"); $conn = sqlsrv_connect( "root-do.domen.ru", $connectionInfo); $cred = explode('\\',$_SERVER['REMOTE_USER']); if (count($cred) == 1) array_unshift($cred, "(no domain info - perhaps SSPIOmitDomain is On)"); list($domain, $user) = $cred; Хочу сделать отдельный файлик для подключения к базе mssql . я полагаю нужно функцию добавить. А в других файлах вызываю include_once 'connectdb.php'; function connectdb($connectionInfo = array( "Database"=>"name", "UID"=>"login", "PWD"=>"pass")){ $conn = sqlsrv_connect( "root-do.domen.ru", $connectionInfo); $cred = explode('\\',$_SERVER['REMOTE_USER']); if (count($cred) == 1) array_unshift($cred, "(no domain info - perhaps SSPIOmitDomain is On)"); list($domain, $user) = $cred; }
Функция так себе будет работать потому что ты не возвращаешь подключения. Ну и советую тебе подключение оформить статической переменной чтоб один раз устанавливать соединение в рамках обработки текущего запроса или процесса. Это всё что хочется сказать с учётом отсутствия у в твоём топике каких-либо вопросов. Хочешь оформить функцией - молодец. Хочешь в отдельный файл - ну тоже типа молодец.
function getDentrix() { # PHPinfo(); global $conn; $connectionInfo = array( "Database"=>"name", "UID"=>"login", "PWD"=>"pass"); $conn = sqlsrv_connect( "root-do1.domen.ru", $connectionInfo); $cred = explode('\\',$_SERVER['REMOTE_USER']); if (count($cred) == 1) array_unshift($cred, "(no domain info - perhaps SSPIOmitDomain is On)"); list($domain, $user) = $cred; return $conn; }
Вот ещё вопрос. Есть допустим ошибка при подкл к базе mssql. try ищет исключения. но фишка в том что браузер первый выдаёт ошибку нежели мой catch запишет ошибку в логи. Как сделать чтоб try стоял выше сист ошибки? $conn=getDentrix(); $tsq2 = "exec dbo.SetLog @svc='".$svc."', @log='".$text."'"; try{$stmt3 = sqlsrv_query( $conn, $tsq2);} catch (Exception $e) { file_put_contents($log_name, $e->getMessage())
Какую ошибку-то? Если ты работаешь прям как вот у тебя два листинга написаны то ты вызываешь функцию, пишешь значение в глобальную переменную изнутри этой функции а потом перетираешь пустым возвратом этой функции. Но тогда ошибка будет перехвачена. Следовательно можно предположить что у тебя ошибка возникает где-то на этапе выполнения этой функции. При подключении то бишь, например. Но это всё гадание ибо информации от тебя очень мало. И ЕМНИП тот драйвер не кидается исключениями и нужно это всё дело самому оборачивать в фантики. Но это опять же лишь предположение.
@Kvandaik, через try можно отловить только выброшенное исключение. sqlsrv_connect ими не кидается, она возвращает false, как и остальные функции.
сделал. потом уже анализатор писать буду. и ошибки ещё на скл складываются, вот когда подкл к базе загнётся сам сервак будет через анализатор отправит нужную инфу. try{ $conn=getDentrix(); $tsq2 = "exec dbo.SetLog @svc='".$svc."', @log='".$text."'"; $stmt3 = sqlsrv_query( $conn, $tsq2); if (!$stmt3) { throw new \Exception('something is wrong with connection logf.php'); } } catch (Exception $e) { file_put_contents($log_name, date("Y-m-d H:i:s")." ".basename(__FILE__)." > ".$e->getMessage().PHP_EOL , FILE_APPEND | LOCK_EX); }