За последние 24 часа нас посетили 57067 программистов и 1779 роботов. Сейчас ищут 978 программистов ...

function connect

Тема в разделе "PHP для новичков", создана пользователем Kvandaik, 21 авг 2018.

  1. Kvandaik

    Kvandaik Новичок

    С нами с:
    5 июл 2018
    Сообщения:
    121
    Симпатии:
    1
    $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;
    }
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Функция так себе будет работать потому что ты не возвращаешь подключения.
    Ну и советую тебе подключение оформить статической переменной чтоб один раз устанавливать соединение в рамках обработки текущего запроса или процесса.
    Это всё что хочется сказать с учётом отсутствия у в твоём топике каких-либо вопросов. Хочешь оформить функцией - молодец. Хочешь в отдельный файл - ну тоже типа молодец.
     
  3. Kvandaik

    Kvandaik Новичок

    С нами с:
    5 июл 2018
    Сообщения:
    121
    Симпатии:
    1
    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;
    }
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Всё же лучше статическую переменную, а не глобальную. Но это с опытом придёт.
     
  5. Kvandaik

    Kvandaik Новичок

    С нами с:
    5 июл 2018
    Сообщения:
    121
    Симпатии:
    1
    Вот ещё вопрос.
    Есть допустим ошибка при подкл к базе 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())
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Какую ошибку-то?
    Если ты работаешь прям как вот у тебя два листинга написаны то ты вызываешь функцию, пишешь значение в глобальную переменную изнутри этой функции а потом перетираешь пустым возвратом этой функции. Но тогда ошибка будет перехвачена. Следовательно можно предположить что у тебя ошибка возникает где-то на этапе выполнения этой функции. При подключении то бишь, например. Но это всё гадание ибо информации от тебя очень мало.
    И ЕМНИП тот драйвер не кидается исключениями и нужно это всё дело самому оборачивать в фантики. Но это опять же лишь предположение.
     
  7. Kvandaik

    Kvandaik Новичок

    С нами с:
    5 июл 2018
    Сообщения:
    121
    Симпатии:
    1
    Логи хочу создать, ошибку спецом сделал чтоб оттестировать команды try catch
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    @Kvandaik, через try можно отловить только выброшенное исключение. sqlsrv_connect ими не кидается, она возвращает false, как и остальные функции.
     
  9. Kvandaik

    Kvandaik Новичок

    С нами с:
    5 июл 2018
    Сообщения:
    121
    Симпатии:
    1
    сделал. потом уже анализатор писать буду. и ошибки ещё на скл складываются, вот когда подкл к базе загнётся сам сервак будет через анализатор отправит нужную инфу.
    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);
    }