Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 8 von 8
  1. #1
    Neuer Benutzer
    Registriert seit
    13.08.2017
    Beiträge
    4

    Frage Zugriff auf MySQL mit PHP schlägt ohne Fehlermeldung fehl

    Hallo zusammen,

    meine ersten Schritte mit PHP laufen recht positiv, jetzt hänge ich beim Zugriff auf MySQL fest. In PHPmyAdmin habe ich mich mit dem SQL-Server verbunden und die Tabelle "test" mit den entsprechenden Feldern angelegt und einen Datensatz erzeugt.
    Mit folgendem Code hätte ich mir erwartet, dass wenigstens eine Fehlermeldung angezeigt wird, aber in Firefox bleibt der Bildschirm weiß. Das ganze ist bei T-Online gehostet, mit localhost klappts genau so wenig.

    PHP-Code:
    <?php 
    $user 
    "MeinMySQLUser";
    $password "MeinMySQLPasswort";
    try {
        
    $pdo = new PDO("mysql:host=mysql5.service;port=3306;dbname=MeinMySQLDBName"$user$password);
        
    $pdo->setAttributePDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION );
        
    $sql "SELECT name, vorname, passwort FROM test";
        foreach (
    $pdo->query($sql) as $row) {
        echo 
    $row['name']." ".$row['vorname']."<br />";
        echo 
    "passwort ".$row['passwort']."<br /><br />";
        } catch (
    PDOException $e) {
            echo 
    "Error!: " $e->getMessage() . "<br/>";
        }
    ?></p>
    Wer kann mir auf die Sprünge helfen?

    Danke

    intonator

  2. #2
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.144

    Standard

    Wenn du keine Ausgaben machst, wird wohl auch nix angezeigt werden

    $statement = $pdo->prepare("SELECT * FROM test");

    if($statement->execute()) {
    echo"ok";
    }
    else
    {
    echo $statement->errorInfo();
    }

    http://php.net/manual/de/pdo.errorinfo.php
    Des Weiteren ist "name" ein reserviertes Wort in MYSQL
    https://dev.mysql.com/doc/refman/5.5/en/keywords.html
    Geändert von Christian Marquardt (13.08.2017 um 11:20 Uhr)
    Christian

  3. #3
    Neuer Benutzer
    Registriert seit
    13.08.2017
    Beiträge
    4

    Standard

    Hallo Christian,

    danke für deine turboschnelle Antwort. Ich habe Deinen Hinweis eingearbeitet, es bleibt bei keiner Ausgabe in Firefox. Habe es alternativ in IE getestet: HTTP 500 Fehler. Das macht mir die Fehlersuche nicht leichter ;-) Ich betreibe auf dem Server auch eine kleine Website mit PMWiki, das basiert auf PHP und die läuft.
    Frage zu meinem Verständnis: Warum meinst Du, dass ich in meinem ersten Code keine Ausgaben mache? Ich übergebe doch der pdo->query mein SQL-Statement und lasse es zeilenweise über foreach ausgeben.

    PHP-Code:
    <?php 
    $user 
    "MeinMySQLUser";
    $password "MeinMySQLPasswort";
    try {
        
    $pdo = new PDO("mysql:host=mysql5.service;dbname=MeinMySQLDBName"$user$password);
        
    $pdo->setAttributePDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION );
        
    $sql "SELECT * FROM test";
        
    $statement $pdo->prepare($sql);
        if (
    $statement->execute()) {
            echo (
    "Execute");
        }
        else
        {
            echo (
    "errorInfo");
            echo 
    $statement->errorInfo();
        }

        } catch (
    PDOException $e) {
            echo 
    "Error!: " $e->getMessage() . "<br/>";
        }
    ?></p>
    Die Feldbezeichnung "name" habe ich in MySQL gleich noch in "nachname" geändert. Hatte aber keine Auswirkung auf das Problem.

    Intonator
    Geändert von intonator (13.08.2017 um 11:48 Uhr)

  4. #4
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.144

    Standard

    Wenn das Statement ohne Fehler läuft, aber die Ergebnismenge leer ist, erfolgt keine Ausgabe.
    Der HTTP 500er Fehler deutet darauf hin, dass die Seite, die du aufrufst, beim PHP-Interpreter einen Fehler erzeugt.
    Schau im error.log des Webservers, was für ein Fehler aufgetreten ist
    Du bist sicher, dass auf deinem Server PDO installiert ist? -> phpinfo(); sollte das ausgeben
    Christian

  5. #5
    Neuer Benutzer
    Registriert seit
    13.08.2017
    Beiträge
    4

    Standard

    PDO sollte drauf sein (das wäre aber auch der super Anfängerfehler gewesen, hätte ich mich direkt darüber gefreut!):
    MySQL_PDO.JPG

    Habe den Server mal mit *error*.* durchsucht. Es gibt eine cgi_error.log, in der stehen lt. T-Online alle PHP Fehler drin. Da sind auch welche drin, allerdings von meinen Versuchen gestern Abend, von heute ist nichts zu finden (Nutzername und Passwort habe ich ausgeXt):
    PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] No such file or directory' in /home/www/phptest/phpinfo.php:5
    Stack trace:
    #0 /home/www/phptest/phpinfo.php(5): PDO->__construct('mysql:host=loca...', 'XXX', 'XXX')
    #1 {main}
    thrown in /home/www/phptest/phpinfo.php on line 5

    Die Fehler haben alle als host = localhost, das werte ich mal als Zeichen, dass es damit nicht funktioniert.

  6. #6
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.144

    Standard

    Dann fang klein an
    <?php
    $user
    = "MeinMySQLUser";
    $password = "MeinMySQLPasswort";
    echo $user." ".$password;
    ?>
    </p>

    Und nimm dann halt Zeile für Zeile wieder rein
    Christian

  7. #7
    Neuer Benutzer
    Registriert seit
    13.08.2017
    Beiträge
    4

    Standard

    Hallo Christian,

    danke für Deine Mühe und Geduld. Der Wald hat sich gelichtet, jetzt ist das Ergebnis wie erwartet:

    PHP-Code:
    <?php 
    $user 
    "MeinMySQLUser";
    $password "MeinMySQLPasswort";
    try {
            
    $pdo = new PDO("mysql:host=mysql5.service;dbname=MeinMySQLDBName"$user$password);
            
    $pdo->setAttributePDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION );
            
    $sql "SELECT * FROM test";
            
    $statement $pdo->prepare($sql);
        
            if (
    $statement->execute()) {
                echo (
    "Execute OK" ."<br />");
                while(
    $row $statement->fetch()) {
                    echo 
    $row['vorname']." ".$row['nachname']."<br />";
                    echo 
    "passwort: ".$row['passwort']."<br /><br />";
                }
            } else
            {
                echo (
    "errorInfo");
                echo 
    $statement->errorInfo();
            }
        } catch (
    PDOException $e
        {
            echo 
    "Error!: " $e->getMessage() . "<br/>";
        }
    ?></p>
    Danke dass Du dich als alter Fuchs hier mit Anfängern wie mir abgibst!

    Ciao

    intonator

  8. #8
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.144

    Standard

    Schön, das es geht
    Christian

 

 

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •