Thema: PDO-Rätsel
Einzelnen Beitrag anzeigen
  #1  
Alt 15.05.2012, 22:38:36
adrianzeitblom adrianzeitblom ist offline
Anfänger
 
Registriert seit: Oct 2007
Beiträge: 10
PDO-Rätsel

Hallo,

mag mir (PHP-Newbie) vielleicht jemand helfen, folgende Situation zu verstehen?
Der folgende Code tut nicht, was er soll.
Ich möchte gern, dass Dateinamen aus einem Verzeichnis (Beispiele für [um die Dateiendung bereits gekürzte] Namen: "000001", "000002" etc.) in die Spalte einer MySQL-Tabelle eingetragen werden, jedoch nur, sofern die Namen dort noch nicht vorhanden sind. Die Werte werden der Funktion als Array übergeben. Der folgende Code trägt zwar die Werte ein, jedoch auch dann, wenn sie bereits vorhanden sind.
Falls ihr euch fragt, warum ich die Datenbankverbindung öffne, schließe, um sie dann erneut zu öffnen usw.: Meine zweite Frage wäre, weshalb das notwendig ist. Ich hatte es zunächst probiert, indem ich die PDO-Verbindung am Funktionsbeginn geöffnet und am Ende wieder geschlossen habe, das funktionierte aber nicht: Dann landeten gar keine Daten in der Datenbank.
Hier nun der Code:

Code:
function karteiMitDatenbankAbgleichen($karteiBereinigt) {

    foreach ($karteiBereinigt as $wert) {
        $db = new PDO("mysql:host=localhost;dbname=karteiapp", 'root', '');
        try {
            $countA = $db->exec("SELECT * FROM inhalte WHERE dateiname='$wert'");
        } catch (PDOException $e) {
            echo $e->getMessage();
        }
        $db = null;

        if ($countA == 0) {
            try {
                $db = new PDO("mysql:host=localhost;dbname=karteiapp", 'root', '');
                $countB = $db->exec("INSERT INTO inhalte (dateiname) VALUES ('$wert')");
            } catch (PDOException $e) {
                echo $e->getMessage();
            }
            $db = null;
        }else{
            echo $e->getMessage();
        }
    }
}
Ich befürchte, etwas Grundsätzliches an der Funktionsweise von PDO nicht verstanden zu haben, und es wäre mir eine große Hilfe, wenn mir jemand auf die Sprünge helfen würde... Herzlichen Dank im Voraus!
Mit Zitat antworten