Keine Datenbank-Verbindung mit PDO

  • Guten Tag,


    ich würde gerne auf meine Datenbank zugreifen, die ich mit "phpMyAdmin" erstellt habe und bereits eine Tabelle darin angelegt habe.

    Alles lief soweit gut!


    In der phpinfo()-Seite wird mir auch angezeigt, dass die Datenbank-API namens "PDO" auf "enabled" ist.


    Trotzdem tritt bei angefügtem Script folgende Fehlermeldung auf:


    "Verbindung zur Datenbank fehlgeschlagen: could not find driver"



    Kann es sein, dass ich lediglich nur noch irgendwo ein "kleines Häkchen" setzen müsste, z.B. bei PHP-Extension oder dergleichen?

    Bei der API "mysqli" wird es wohl nicht anders sein.


    Für einen kleinen Tipp wäre ich sehr dankbar.


    Danke,

    Ralph




    ----------------------------------------------------------


  • Wo läuft dieses PHP-Script? Auf einem Webhosting-Tarif, einem VPS/RS oder ganz woanders?


    Falls es ein Webhosting-Tarif ist: Rufst Du das über HTTP oder SSH/CLI auf? Welche PHP-Version wird verwendet?


    In meiner phpinfo() Ausgabe, dort wo ich das PHP-Script starten möchte, sehe ich diese Zeilen:

    Code
    PDO support          => enabled
    PDO drivers          => mysql
    PDO Driver for MySQL => enabled

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

    Einmal editiert, zuletzt von KB19 ()

    Gefällt mir 1
  • Hallo KB19,


    ich danke Dir für Deine Antwort und Mühen.
    Momentan läuft das Script noch offline in meinem Browser (localhost) unter Ubuntu.
    In Abständen schaufele ich dann die PHP-Skripte auf den Server und funktionieren auch online.


    Bisher gab es bei der Scriptausführung keine Probleme bis eben auf die Datenbankanbindung.
    Die phpinfo() liefert bei mir folgende Werte aus:


    PDO drivers mysql, pgsql, sqlite


    pdo_mysql

    Client API version mysqlnd 8.1.19


    pdo_pgsql

    PDO Driver for PostgreSQL enabled
    PostgreSQL(libpq) Version 11.20


    pdo_sqlite

    SQLite Library 3.27.2





    Hmm, vielleicht läuft die Datenbank-Verbindung auch nur, wenn sie von einem Script aufgerufen wird, das sich auf einem NetCup-Server befindet.
    Auf NetCup selbst habe ich den Tarif "Webhosting 4000".


    Falls es nicht klappen sollte, danke ich Dir trotzdem und kehre - bei der Verwaltung eines kleineren Datenbestandes - wieder zu Arrays zurück und lasse den MySQL-"Overhead" vielleicht doch sein.


    Beste Grüße
    Ralphonsius

  • Hallöchen,


    ich merke, dass mir das technische Verständnis für mySQL doch (noch) fehlt. Vielleicht ist in Zukunft mySQL wirklich eine Option für mich.

    Ich habe mich daher doch für die Umsetzung entschieden, meine Daten in Form eines eigenen, minimalistischen Flat-File-CMS zu organisieren, also auf die Verzeichnisstruktur und Ablage in Dateien begrenzt. Das reicht für mein Vorhaben und für meine Bedürfnisse aktuell aus.
    Die ebenfalls angedachte Möglichkeit, aber verworfene "nested-assoziatve-Arrays"-Variante, erscheint mir bei zunehmenden Datenpool doch für zu unhandlich, obwohl ich viele interessante Parallelen zur Datenbank sehe (Index "0" für die Tabellenkopfzeile, key-Wert für den Primärschlüssel).

    Ich möchte mich trotzdem für das Lesen meines Beitrages und insbesondere mich bei KB19 für seine Hilfe bedanken.

    Beste Grüße
    Ralph

  • Hmm, vielleicht läuft die Datenbank-Verbindung auch nur, wenn sie von einem Script aufgerufen wird, das sich auf einem NetCup-Server befindet.
    Auf NetCup selbst habe ich den Tarif "Webhosting 4000".

    hast du denn die DB für den externen Zugriff freigegeben bzw. die IP von der du zugreifst?

    bei externen Zugriffen musst du dann die externe IP des DB-Servers nehmen die interne geht da nicht

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE

    Gefällt mir 1
  • Danke Euch beiden für die Antwort!

    Ich würde dir dringend raten dich doch zu den Datenbanken durchzukämpfen. Dateien sind definitiv kein Ersatz für alles was über Spielerei hinausgeht…

    Danke, ThomasChr, für den Tipp hinsichtlich der Verwendung einer Datenbank, die vielleicht doch die bessere Methode ist.

    Ich habe mich vielleicht auch vom Konuzept der FileFlat-CMS-Systeme inspirieren lassen.


    hast du denn die DB für den externen Zugriff freigegeben bzw. die IP von der du zugreifst?

    bei externen Zugriffen musst du dann die externe IP des DB-Servers nehmen die interne geht da nicht

    Danke auch Dir, extremmichi!
    Ich habe mit meinem verwendeten Datenbankbenutzernamen folgende Einstellung:

    ----------------------------------------------------------------------

    Remoteverbindungen von beliebigem Host zulassen

    ----------------------------------------------------------------------


    Ebenso habe ich beim $servername den "localhost" durch die IP des Datenbankservers verwendet.


    Grüße,
    Ralph

  • Falls du die externe IP des Datenbankservers verwendet hast, also nicht die 10.xxx.xxx.xxx, sollten zumindest die Verbindungsinformationen für die Datenbank passen.

  • Eventuell auch mal testweise die (Windows) Firewall abschalten!

    Danke Dir, für den Tipp!
    Selbst benutze ich Ubuntu und konnte nach mehrmaligen "Anläufen" doch eine Verbindung zur Datenbank herstellen. Es ging also irgendwie doch ... allerdings nur ONLINE, d.h. das PHP-Script hochgeladen. Das Thema ist ziemlich tricky, aber es macht Laune.
    Ich möchte jetzt auch nicht die Community hier mit "Trouble-Shooting"-Aufgaben zuballern, sondern probiere es erst mal selbst und muss mich wohl - wie "extremmichie" es bereits sagte - durchs Thema durchkämpfen.
    Es ist aber machbar, danke Dir! :)

  • Falls du die externe IP des Datenbankservers verwendet hast, also nicht die 10.xxx.xxx.xxx, sollten zumindest die Verbindungsinformationen für die Datenbank passen.

    Danke, es hat bisher geklappt, nur einmal, dann habe ich wieder eine kleine Änderung vorgenommen.
    Ich komme nicht drum herum, mich intensiver in diese Materie einzulesen.

    Wo findet sich die externe IP des Datenbankservers? Ich habe es immer mit der 10.xxx.xxx.xxx versucht.

  • Die interne IP 10.xxx.xxx.xxx funktioniert nur im internen Netzwerk, also wenn sie von deinem Webhostingserver aus aufgerufen wird. Die externe IP findest Du im CCP in der Übersicht deines Webhosting 4000 (Zeile "MySQL-Server"). Mit der externen IP sollte es sowohl von deinem Webhosting aus als auch von lokal funktionieren.

  • Die interne IP 10.xxx.xxx.xxx funktioniert nur im internen Netzwerk, also wenn sie von deinem Webhostingserver aus aufgerufen wird. Die externe IP findest Du im CCP in der Übersicht deines Webhosting 4000 (Zeile "MySQL-Server"). Mit der externen IP sollte es sowohl von deinem Webhosting aus als auch von lokal funktionieren.

    Danke Dir!!!
    Ich Dussel habe doch tatsächlich nicht weiter unten gelesen und habe das "extern" überlesen.


    Trotzdem kommt immer noch die Meldung " Verbindung zur Datenbank fehlgeschlagen: could not find driver"

    Egal, ich denke, ich lasse mal den Sonntag Sonntag sein und wage - nach einer überschlafenen Nacht - morgen es nochmal.
    Du hast mir auf jeden Fall eine Menge geholfen, DANKE!

  • Es hat funktioniert, DANKE euch allen!
    Gestern ging es noch nicht!

    Vielleicht waren die falschen Verbindungsdaten noch im Cache meines Chromium-Browsers gespeichert, den ich eigens für "localhost" verwende und den Cache dort eigentlich deaktiviert habe.

    Wenns ein Ubuntu ist sollte ja ein

    Code
    apt install php-mysql

    ausreichen.


    Vielleicht aber auch am gestrig installierten "php-mysql"? Danke, ThomasChr!

    hast du denn die DB für den externen Zugriff freigegeben bzw. die IP von der du zugreifst?

    bei externen Zugriffen musst du dann die externe IP des DB-Servers nehmen die interne geht da nicht

    Vielleicht aber auch an der "IP-Adresse (extern)" des MySQL-Servers? Danke, extremmichi!



    Der Tipp kam auch von tab:

    Falls du die externe IP des Datenbankservers verwendet hast, also nicht die 10.xxx.xxx.xxx, sollten zumindest die Verbindungsinformationen für die Datenbank passen.

    Danke, tab!

    ------------------------------


    Alles läuft jetzt wunderbar!
    Jetzt ist es an mir, mein Wissen bezüglich Datenbank zu vertiefen!
    Mir gefällt SQL aber jetzt schon aufgrund der klaren Struktur und Flexibilität!


    Danke nochmals Euch ALLEN!
    Auch Dir, KB19!

    Wo läuft dieses PHP-Script? Auf einem Webhosting-Tarif, einem VPS/RS oder ganz woanders?


    Falls es ein Webhosting-Tarif ist: Rufst Du das über HTTP oder SSH/CLI auf? Welche PHP-Version wird verwendet?


    In meiner phpinfo() Ausgabe, dort wo ich das PHP-Script starten möchte, sehe ich diese Zeilen:

    Code
    PDO support          => enabled
    PDO drivers          => mysql
    PDO Driver for MySQL => enabled




    Beste Grüße,

    Ralph