Ankündigung

Einklappen
Keine Ankündigung bisher.

pdo DB zugriff geht nicht. Fatal error: Uncaught Exception: ...

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • pdo DB zugriff geht nicht. Fatal error: Uncaught Exception: ...

    Moin, ich habe ein problem eine DB Verbindng herzustellen. Bekomme wenn ich die Seite aufrufe den Fehler :

    Fatal error: Uncaught Exception: Konnte nicht zur Datenbank verbinden! in /xx/xx/xx/xx/include/class/db.php:28 Stack trace: #0 /xx/xx/xx/xx/include/bt.php(4: db->__construct(Array) #1 /xx/xx/xx/xx/login.php(29): require_once('/xx/xx/xx/xx...') #2 {main} thrown in /xx/xx/xx/xx/include/class/db.php on line 28

    class/db.php

    PHP-Code:
    <?php

    class db
    {
        private 
    $con;
        public 
    $data = array();

        function 
    __construct($dsn = array()) {
            if(!isset(
    $dsn$dsn[0], $dsn[1], $dsn[2]))
                die(
    "dsn fehlerhaft");
            try{
                
    $this->con = new PDO($dsn[0], $dsn[1], $dsn[2]);
                
    $this->con->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_SILENT);
                
    $this->con->query('SET NAMES utf8');
            }catch(
    PDOException $e){
                throw new 
    Exception('Konnte nicht zur Datenbank verbinden!');
            }
        }

        public function 
    getPDO(){
            return 
    $this->con;
        }

        public function 
    row_count($table,$condition '1=1'){
            
    $sql "SELECT COUNT(*) FROM " $table " WHERE " $condition;
            
    $qry $this->con->prepare($sql);
            
    $qry->execute();
            return 
    $qry->fetchColumn(0);
        }
    }
    /*
    public function get_Assoc($sql, $params=array()){
          $stmt = $this->prepare($sql);
          $params = is_array($params) ? $params : array($params);
          $stmt->execute($params);
          return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
    */
    ?>
    bt.php
    PHP-Code:
    47 require_once("include/class/db.php");
    48 $database = new db($dsn);
    49 $GLOBALS['DB'] = $database->getPDO(); 
    dbzugang.php
    PHP-Code:
    <?php

    $mysql_host 
    "localhost";
    $mysql_user "root";
    $mysql_pass "xxxxxxxxx";
    $mysql_db   "dbname";

    //NEU PDO
    $db_info = array(
        
    "db_host" => "localhost",
        
    "db_port" => "3306",
        
    "db_user" => "root",
        
    "db_pass" => "xxxxxxxxxx",
        
    "db_name" => "dbname",
        
    "db_charset" => "UTF-8"
    );
    $dsn = ["mysql:host=".$db_info['db_host'].';port='.$db_info['db_port'].';dbname='.$db_info['db_name'],$db_info['db_user'], $db_info['db_pass']];
    ?>

    wo liegt der fehler ?

  • #2
    So zusammengewürfelt kann man deinen Code nicht lesen, weil die Info fehlt was davon wirklich Kommentar ist, die Zeilenumbrüche musst du berichtigen.

    "Konnte nicht zur Datenbank verbinden" ist ja nun keine Fehlermeldung von PHP, also musst du gucken was an der Stelle wirklich passiert. Aus irgendeinem Grund wertest du die Exception $e die du bekommst ja gar nicht wirklich aus, sondern wirfst eine neue - in $e steht aber eine konkrete Fehlermeldung drin. Kannst da auch einfach mal ein var_dump machen.

    Kommentar


    • #3
      Versuche es mal testweise direkt so wie hier: https://php-de.github.io/jumpto/pdo/#create-conn Eigentlich brauchst du keine Klasse rund um PDO bauen, PDO ist schon eine OOP Klasse.

      Kommentar


      • #4
        PHP-Code:
        $this->con->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_SILENT); 
        Damit bekommst du nur unter erheblichem Aufwand mit, wenn bei einer Datenbankoperation etwas schiefgeht.

        Kommentar


        • #5
          Dormilich dafür habe ich ein extra script was alles was mit der DB ist loggt.

          Problem hat sich erledigt. ich habe die seite auf einem frischen root geladen und bei der installation aussversehen den DB zugriff gespert

          Kommentar


          • #6
            Zitat von erwieder Beitrag anzeigen
            dafür habe ich ein extra script was alles was mit der DB ist loggt.
            Das heißt, du prüfst nach jeder Operation, ob was neues im Log ist?

            Kommentar

            Lädt...
            X