PDP Zugriffe auf MySQL

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

  • PDP Zugriffe auf MySQL

    Hallo hat jemand ne Erklärung dafür, dass der 1. PDO Zugriff (SELECT ...)funktioniert und der darauffolgende (INSERT ...) nicht?

    PHP-Code:
    try {
    $dbh = new PDO("$dbtyp:host=localhost;dbname=$dbname"$user$pass);
    foreach (
    $dbh->query("SELECT * FROM initiativen WHERE Unternehmen='$unternehmen'  ") as $row) {
    if (
    $_REQUEST['initiativenname'] == $row["Initiativenname"]) {
    $this->msginitiativenname .= "<p class='fehlermessage'>Initiativenname bereits vergeben!</p>";
    $this->valid 1;
    }
    }
    $dbh null;
    } catch (
    PDOException $e) {
    print 
    "Error!: " $e->getMessage() . "<br/>";
    die();


    PHP-Code:
    try {
    $dbh = new PDO("$dbtyp:host=localhost;dbname=$dbname"$user$pass);
    $count$dbh->exec("INSERT INTO initiativen (Unternehmen, Initiativenname ) VALUES ('$unternehmen' ,'$initiativenname' ");
    $dbh null;
    } catch (
    PDOException $e) {
    print 
    "Error!: " $e->getMessage() . "<br/>";
    die();

    Die Variable $count ist leer, es gibt keine Fehlermeldung, es passiert rein garnichts beim Aufruf der exec Methode.

  • #2
    ohne die klasse PDO zu kennen, muss man raten. was passiert bei einem
    PHP-Code:
    $count$dbh->query(...); 
    btw: warum hier auf einmal exec?

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      PDO steht für PHP Data Objects und ist eine objektorientierte Schnittstelle für DB Zugriffe. Der Vorteil ist, dass dahinter nicht nur nur MySQL sondern jede beliebige andere DB stehen kann, für die es einen PDO Driver gibt.

      Die query Methode wird benutzt, um Ergebnisse zu zurückzubekommen (SELECT) während die exec Methode dazu da ist, INSERTs und DELETEs auszuführen und die Anzahl der Zeilen zurückgibt, die durch die Operation betroffen waren. So zumindest habe ich das manual interpretiert.

      Kommentar


      • #4
        kropff: rtfm

        stonebreaker: schau dir an, was in errorInfo() steht.

        und wo wird der zweite block ausgeführt? in einer anderen datei? ist dort error_reporting eingestellt?

        Kommentar


        • #5
          kropff: rtfm
          OffTopic:
          bis ich jesus? trag ich latschen?


          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            http://de2.php.net/manual/en/ref.pdo.php

            Kommentar


            • #7
              Der zweite Block wird in einer anderen Methode ausgeführt. Fehlermeldungen gibt es keine, auch im Quelltext nicht - sehr merkwürdig.

              Hab es inzwischen mit einem prepared Statement gemacht und dieses mit der Methode execute ausgeführt. Und siehe da, es funktionierte.

              Kommentar


              • #8
                var_dump von $dbh mal gemacht?

                im ersten block ist übrigens $dbh = null; fehl am platz. und generell nicht notwendig.

                Kommentar


                • #9
                  var_dump ergibt:

                  object(PDO)#6 (0) { }

                  Das scheint nicht instanziiert zu sein oder was sagt uns das?

                  Kommentar


                  • #10
                    doch... versuch mal an der stelle ein select-statement auszuführen. kommst du an die datensätze dran?

                    Kommentar


                    • #11
                      Hab das INSERT durch ein SELECT ersetzt und das funktioniert bestens.

                      Kommentar


                      • #12
                        oh.. fehlt da nicht eine schließende klammer bei insert?

                        Kommentar


                        • #13
                          Hab das hier nochmal dokumentiert. Mit dem auskommentierten PREPARE geht es, mit dem QUERY darunter geht es nicht. Ich kann bei den Klammern keinen Fehler sehen.

                          PHP-Code:
                          /*
                          $dbh = new PDO("$dbtyp:host=localhost;dbname=$dbname", $user, $pass);
                          $stmt = $dbh->prepare("INSERT INTO initiativen (Unternehmen, Initiativenname ) VALUES (:value1, :value2)");
                          $stmt->bindParam(':value1', $unternehmen);
                          $stmt->bindParam(':value2', $initiativenname);
                          $stmt->execute();
                          */
                          try {
                          $dbh = new PDO("$dbtyp:host=localhost;dbname=$dbname"$user$pass);
                          $dbh->query("INSERT INTO initiativen (Unternehmen, Initiativenname ) VALUES ($unternehmen$initiativenname)");
                          var_dump ($dbh);
                          $dbh null;
                          } catch (
                          PDOException $e) {
                          print 
                          "Error!: " $e->getMessage() . "<br/>";
                          die();

                          Kommentar


                          • #14
                            bei deinem code ganz am anfang sind die strings richtig markiert, aber die klammern falsch gesetzt. nun - genau andersherum

                            Kommentar


                            • #15
                              sorry, ich kann mir das 10mal anschauen und seh den Fehler nicht (sitze wahrscheinlich schon zulange vor dem Monitor). Meinst Du die Klammer direkt hinter dem Aufruf der Query-Methode?

                              Kommentar

                              Lädt...
                              X