Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] executeQuery - Verständnisfrage

Einklappen

Neue Werbung 2019

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

  • [Erledigt] executeQuery - Verständnisfrage

    Hallo,

    ich möchte gerne übungshalber verschiedene Datenbankabfragen in prepared statements umschreiben. Dazu versuche ich folgende Funktion zu verstehen:

    $GLOBALS['DB']->executeQuery("INSERT INTO tabelle VALUES(" . Wert1 . ", 'details', 'J', NULL)", 4);

    Soweit mein Verständnis: executeQuery wird ausschließlich zum lesen in der DB verwendet. SQL-Befehl an sich ist mir auch klar.
    Was ich nicht verstehe, wofür steht die 4?

    Dazu habe ich mir verschieden Seiten zu executeQuery durchgelesen.
    http://php.net/manual/de/sdo-das-rel...ecutequery.php <-- Hier steht etwas von colum spezifier, aber das müsste ja dann in dieser Form auftreten table-name.column_name also irgendwie in form "tabelle.xzy"

    Dann hab ich bei http://pear.php.net/manual/en/packag...ecuteQuery.php gelesen, dass diese Funktion bei prepared statements hergenommen wird (was mich in diesem Falle verwirrt, da der SQL-Befehl ja kein prepared statement ist) und der hintere Teil, also die 4, ein array sein soll. Ist es ja in diesem Fall auch nicht.

    Ich bin mir bewusst das ich hier höchstwahrscheinlich zu unterschiedliche Funktionen was gelesen habe. Ich wollte damit nur darstellen, das ich durchaus schon selbst versucht habe es zu verstehen.

    Vielleicht kann mir der ein oder andere erklären was es mit dieser Zahl bzw. mit der ganzen Funktion auf sich hat, oder mir die richtige Seite mit Erklärung posten, damit ich nicht mehr ganz so im dunkeln tappe

    Lieben Dank,

    cookie


  • #2
    da steht was von "array $column_specifier" um genau zu sein.,

    To summarise, specify a column specifier array whenever there is any uncertainty about which column could be from which table and only omit it when every column name in the database metadata is unique.
    wird bei den verlinkten beispielen mit mehreren tablen recht gut erleutert finde ich.

    ich würde mich daran halten:
    Warnung

    Diese Funktion ist EXPERIMENTELL. Das Verhalten, der Funktionsname und alles Andere, was hier dokumentiert ist, kann sich in zukünftigen PHP-Versionen ohne Ankündigung ändern. Seien Sie gewarnt und verwenden Sie diese Funktion auf eigenes Risiko.

    Kommentar


    • #3
      Mir stellt sich die Frage, ob es sich wirklich um die besagte Funktion handelt?!
      Wenn Du versuchst, diese zu verstehen, nehme ich mal an, daß es sich um ein Script handelt, das Du nicht selbst geschrieben hast.
      Dann kann es vermutlich sein, daß eine DB-Wrapper Klasse existiert, in der eine eigene executeQuery()-Methode definiert ist?!

      Meine Vermutung rührt daher, daß dieser Aufruf:
      PHP-Code:
      $GLOBALS['DB']->executeQuery("INSERT INTO tabelle VALUES(" Wert1 ", 'details', 'J', NULL)"4); 
      basierend auf http://php.net/manual/de/sdo-das-rel...ecutequery.php zu einem Fehler führen würde, denn als ersten Parameter erwartet diese ein PDO-Handle, was bei Dir nicht gegeben ist!

      Überprüfe doch mal, was sich hinter $GLOBALS['DB'] verbirgt:
      PHP-Code:
      var_dump $GLOBALS['DB'] ); 
      Weiterhin stimmt mich $GLOBALS in Bezug auf die Aktualität des Scriptes nachdenklich...
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

      Kommentar


      • #4
        Anmerkung dazu:

        PHP-Code:
        $GLOBALS['DB']->executeQuery("INSERT INTO tabelle VALUES(" Wert1 ", 'details', 'J', NULL)"4); 
        Soweit mein Verständnis: executeQuery wird ausschließlich zum lesen in der DB verwendet. SQL-Befehl an sich ist mir auch klar.
        Nein.. ist dir scheinbar nicht klar bzw. passt die Aussage nicht zusammen -> INSERT (!) ist nicht lesen.

        LG
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Wenn gar nichts geht, einfach mal die englischen Begriffe für sich selbst übersetzen. Das spart viel
          Die Jatravartiden auf Viltwodl VI können den Kram von dir auch nicht nachvollziehen

          Kommentar


          • #6
            Nein.. ist dir scheinbar nicht klar bzw. passt die Aussage nicht zusammen -> INSERT (!) ist nicht lesen.
            oh klar... Da hatte ich wohl ein Brett vorm Kopf. Tut mir leid.

            ...nehme ich mal an, daß es sich um ein Script handelt, das Du nicht selbst geschrieben hast
            ja, es handelt sich um ein nicht von mir geschriebenes Skript.

            Vielen Dank für eure schnellen Antworten, ich setz mich heut Nachmittag nochmal dran, und versuchs mit euren Ansätzen nochmal nachvollziehen zu können

            Kommentar


            • #7
              Überprüfe doch mal, was sich hinter $GLOBALS['DB'] verbirgt:
              PHP-Code:
              var_dump ( $GLOBALS['DB'] );
              Weiterhin stimmt mich $GLOBALS in Bezug auf die Aktualität des Scriptes nachdenklich...
              habe var_dump(GLOBAL['DB']); ausgeben lassen.

              Als Ergebnis habe ich folgendes erhalten:

              PHP-Code:
              object(NiceDB)#1 (3) { ["DB_Connection"]=> resource(23) of type (mysql link) ["LogErrors"]=> int(1) ["Logfilename"]=> string(53) "C:/xampp/htdocs/url/logs/DB_errorLog.log" } Array 
              damit kann ich persönlich ehrlich gesagt gar nichts anfangen...

              Kommentar


              • #8
                Kann es sein, daß Du in JTL unterwegs bist?

                Da ich vermute, richtig zu liegen, hier findest Du die Bedeutung der Parameter:
                http://developer.jtl-software.de/pro...n-durchführen
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  ja, genau.

                  Danke. Ich wusste gar nicht das es das gibt.
                  Danke Dir!

                  Kommentar

                  Lädt...
                  X