получение более информативного вывода журнала в PHP на PDO веб-хостинга - PullRequest
0 голосов
/ 28 мая 2020

Я занимаюсь разработкой сложной платформы, на которой буду строить последнюю. Я дошел до того, что он работает на моей лампе, но не через веб-хостинг. Одна из моих функций, предназначенная для записи переменных в базу данных во время работы, продолжает отправлять только мелкую

Фатальную ошибку : в / home /.../ asi / kluckaSpolocne. php в строке 51

Это указывает на исключение оператора execute:

throw new \PDOException($e->getMessage(), (int)$e->getCode());

рассматриваемый код:

//echo "\n Spolocne ";
    //require 'ochrana.php';
    // include 'databazaCitaj.php';
    $dbuzyvatel = "mine login";
    $dbheslo    = "mine password";
//$charset = 'utf8mb4';
    $opt        = [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES   => false,
            ];
    try {
        $databaza   = new PDO("mysql:host=localhost;dbname=mine_database", $dbuzyvatel, $dbheslo);
        $databaza->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (\PDOException $e) {
     throw new \PDOException($e->getMessage(), (int)$e->getCode());
    }

# $preloz = $databaza->prepare('select ? from preklady where jazyk=?');


    $GLOBALS['nová']=false;
    $DlzkaVystupu=1;
    $IC=0;
    $Hesla=json_encode(array(1,1));
    $HlavnýÚčel=0;
    $Kolá=array(0);
    $Hlasenia['Premenna']=' ';
    $Hlasenia['Text']=' ';
    $Hlasenia['Cislo']=1;
    $Hlasenia['JS']='[0]';
    $Hlasenia['Kdo']=0;
    $Hlasenia['Vlastnosti']='[0]';
    //print_r($Hlasenia);


    /*$hlásenie=$databaza->prepare('insert into Hlásenia (Premenná, Text) 
    values (:Premenna, :Text)');//*/
    $hlásenie=$databaza->prepare('insert into Hlásenia (Premenná, Text, Cislo, JS, Kdo, Vlastnosti) 
    values (:Premenna, :Text, :Cislo, :JS, :Kdo, :Vlastnosti)');//*/
    $hlásenie->bindParam(':Premenna', $Hlasenia['Premenna']);
    $hlásenie->bindParam(':Text', $Hlasenia['Text']);
    $hlásenie->bindParam(':Cislo', $Hlasenia['Cislo']);
    $hlásenie->bindParam(':JS', $Hlasenia['JS']);
    $hlásenie->bindParam(':Kdo', $Hlasenia['Kdo']);
    $hlásenie->bindParam(':Vlastnosti', $Hlasenia['Vlastnosti']);//*/
    // print_r($hlásenie);
    try { $hlásenie->execute(); 
    } catch (\PDOException $e) {
            throw new \PDOException($e->getMessage(), (int)$e->getCode());
    }//*/

Есть идеи, как получить полезную информацию о том, что не так?

1 Ответ

0 голосов
/ 28 мая 2020

Похоже, это ваша «функция, предназначенная для регистрации переменных» запуталась с сообщением об ошибке.

Сделайте так:

set_exception_handler(function ($e)
{
    error_log($e);
    http_response_code(500);
    if (ini_get('display_errors')) {
        echo $e;
    } else {
        echo "<h1>500 Internal Server Error</h1>
              An internal server error has been occurred.<br>
              Please try again later.";
    }
});

Он будет перехватывать каждое исключение и записывать его в журнал ошибок веб-сервера. Это часть полного решения по обработке ошибок , которое я написал.

...