Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfragen verkürzen

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfragen verkürzen

    Guten Abend,

    besteht die Möglichkeit bzw. macht es Sinn, dass man Abfragen in der Schreibweise verkürzen kann? Ich spreche nicht von wiederkehrenden Abfragen sondern frage allgemein. Ich finde es sehr mühselig immer

    SELECT name, vorname ...

    und dann

    $pdoStmnt->bindParam(':name', $_POST['name']);
    $pdoStmnt->bindParam(':vorname', $_POST['vorname']);

    zu schreiben. Hab dann 3 x name und 3 x vorname geschrieben.

  • #2
    Du kannst beim execute() direkt Parmeter mitgeben. Ein bindParam() ist nicht erforderlich.

    Kommentar


    • #3
      Kannst dir das doch etwas anpassen.
      https://mwoodruff.net/articles/autom...ode-generator/

      Kommentar


      • #4
        Für mich hört sich das nach als suchstes Du einen QueryBuilder oder gleich ein ORM.

        Kommentar


        • #5
          Zitat von truemaster Beitrag anzeigen
          Guten Abend,

          besteht die Möglichkeit bzw. macht es Sinn, dass man Abfragen in der Schreibweise verkürzen kann? Ich spreche nicht von wiederkehrenden Abfragen sondern frage allgemein. Ich finde es sehr mühselig immer

          SELECT name, vorname ...

          und dann

          $pdoStmnt->bindParam(':name', $_POST['name']);
          $pdoStmnt->bindParam(':vorname', $_POST['vorname']);

          zu schreiben. Hab dann 3 x name und 3 x vorname geschrieben.
          Ich entschuldige mich bei dir und allen Anwesenden, aber ich komme nicht umhin, dir zu sagen, daß das eine dumme Frage ist. Du fragst im Grunde nach einer verallgemeinerten Lösung (könnte zum Beispiel eine Funktion oder Methode sein, die nur mit den Parametern für die Select-Feldliste, den Parametern für die Abfrage-Parametern und den zu übergebenden Post-Daten gefüttert wird). Die Problemstellung setzt allerdings einen Spezialfall voraus, denn: Die Spalten, nach denen selektiert wird, sind in den seltensten Fällen die gleichen, wie die SELECT-Feldliste, sind sie es, ist das i.d.R. eine unsinnige Abfrage, die unabhängig von der Tabelle immer das selbe, absolut unbrauchbare Ergebnis liefert, z.B.
          Code:
          SELECT tbl_was_auch_immer.Nachname, tbl_was_auch_immer.Vorname FROM tbl_was_auch_immer WHERE Nachname = "Mustermann" AND Vorname = "Max";
          lefert eintweder ein leeres Ergebnis oder 1 bis soundso viele DS wie
          Code:
          Mustermann | Max
          Auch die Namensgleichheit zwischen den Spaltennamen und den Indizes des $_POST-Arrays ist nicht notwendigerweise so gegeben - eigentlich ist davon sogar abzuraten.

          Kommentar


          • #6
            Ich entschuldige mich bei dir und allen Anwesenden, aber ich komme nicht umhin, dir zu sagen, daß das eine dumme Frage ist.
            Du vergisst die so grossarttig angekündigte frage zu stellen ^^

            Immer das beste annehmend, sogar von dir, gehe ich nicht davon aus, dass du den nächsten te hier diffamieren willst.

            Kommentar


            • #7
              Zitat von tomBuilder Beitrag anzeigen
              Du vergisst die so grossarttig angekündigte frage zu stellen ^^

              Immer das beste annehmend, sogar von dir, gehe ich nicht davon aus, dass du den nächsten te hier diffamieren willst.
              Sorry, tomBuilder ich weiß nicht, was mit dir nicht in Ordnung ist, jedenfalls: Ich habe in meinem Beitrag #5 keine Frage angekündigt, weder "grossarttig" noch "großartig" oder sonst auf irgendeine Art und Weise. Und: Ja, du gehst recht in der Annahme, daß ich hier niemanden diffamieren möchte.

              Noch ein gut gemeinter Rat, in deinem ureigensten, wohlverstandenen Interesse: Lern ein bischen deutsche Rechtschreibung.

              Ergänzung und zurück zur Sache (und zur Sachlichkeit): Es ist einfach unsinnig, Namenswiederholungen vermeiden zu wollen, wenn die betr. Konstellation selten bis unsinnig ist.

              Kommentar


              • #8
                Zitat von marie123 Beitrag anzeigen

                Und: Ja, du gehst recht in der Annahme, daß ich hier niemanden diffamieren möchte.
                Dann tu es nicht permannent .
                Grund: Wir wollen's ja nicht übertreiben
                tu das ruhig, was Du zu mir sagst ist mir recht herzlich egal.
                Deine sonstige Performance hier hätte der meister in der gute alten zeit nicht zugelassen.

                Kommentar


                • #9
                  Zitat von tomBuilder Beitrag anzeigen
                  Dann tu es nicht permannent .

                  tu das ruhig, was Du zu mir sagst ist mir recht herzlich egal.
                  Deine sonstige Performance hier hätte der meister in der gute alten zeit nicht zugelassen.
                  Laß gut sein, der Einzige, der hier diffamiert - besser: es versucht - bist du. Wenn ich hier Moderator wäre, würde ich in erster Linie deine Off-topic-Beiträge unterbinden.

                  P.S. Diffamierung hat ja u.a. das Ziel, jemanden in schlechtem Licht erscheinen zu lassen: Du könntest eine Menge dafür tun, besser da zu stehen, wenn du ein wenig an deiner Rechtschreibung arbeiten würdest...

                  Kommentar


                  • #10
                    Schon wieder so ein Thread, wo die Anzahl der unnützen Beiträge die der nützlichen übersteigt(5:4), jetzt mit meinem sogar 6:4.

                    Wie lange soll das denn so weitergehen?

                    Kommentar


                    • #11
                      nur soviel sei gesagt, nikosch I miss you.

                      Kommentar


                      • #12
                        Zitat von truemaster Beitrag anzeigen
                        Guten Abend,

                        besteht die Möglichkeit bzw. macht es Sinn, dass man Abfragen in der Schreibweise verkürzen kann? Ich spreche nicht von wiederkehrenden Abfragen sondern frage allgemein. Ich finde es sehr mühselig immer

                        SELECT name, vorname ...

                        und dann

                        $pdoStmnt->bindParam(':name', $_POST['name']);
                        $pdoStmnt->bindParam(':vorname', $_POST['vorname']);

                        zu schreiben. Hab dann 3 x name und 3 x vorname geschrieben.
                        Für soliden Code ist explizität gut. Zuviel "Magie" führt schnell zu hässlichen Problemen und Fehlern. PHP selbst bringt in die Richtung schon genung Fettnäpfchen mit. Du solltest bei sowas also gut überlegen, ob es Sinn macht und ob es das Wert ist. Wenn du meinst, das ist es Wert, weil du das 100mal am Tag schreibst, dann vereinfache es.

                        Z.B.:

                        PHP-Code:
                        //Dummy Code! $paramter_key ist falsch, auf die regexp würde ich micht nicht verlassen
                        class MeinTollesPdo extends Pdo
                        {
                            public function 
                        megaMagicQuery(string $sql, array $parameters null): PDOStatement 
                            
                        {
                                
                        $stmt $this->prapare($sql);

                                if(
                        preg_match_all('~(:[a-z_]+)~i'$sql$result)) {
                                    foreach (
                        $result[1] as $paramter_key) {
                                        if (!
                        array_key_exists($parameter_key$paramters)) {
                                            throw new 
                        DaFehltWasException(...);
                                        }

                                        
                        $stmt->bindValue($parameter_key$parameters[$parameter_key]);
                                    }
                                }

                                
                        $stmt->execute();
                                return 
                        $stmt;
                            }

                        PHP-Code:
                        $result $db->megaMagicQuery("SELECT ... WHERE name LIKE :name AND vorname LIKE :vorname"$_POST); 
                        Ich würde hier aber anzweifeln ob das sinn macht. Du reduzierts an der Stelle etwas Boilerplate Code, aber vielleicht machen ganz andere Konzept viel mehr sinn. Schau dir vielleicht mal Laravel an.

                        Zitat von marie123 Beitrag anzeigen
                        Auch die Namensgleichheit zwischen den Spaltennamen und den Indizes des $_POST-Arrays ist nicht notwendigerweise so gegeben - eigentlich ist davon sogar abzuraten.
                        Mehrere Namen für ein und das selbe Element? Der Code aus dem die Träume sind...
                        PHP-Code:
                        $stmt $db->prepare("SELECT lastname FROM ... WHERE lastname LIKE :name");
                        $nachnamen $stmt->execute([':name'$_POST['surname']])->column(); 
                        ...Alpträume.

                        Kommentar


                        • #13
                          Zitat von erc Beitrag anzeigen

                          Für soliden Code ist Explizität gut. ...

                          Mehrere Namen für ein und das selbe Element? Der Code aus dem die Träume sind...
                          Spalte einer DB-Tabelle und Variable, die den Wert eines Parameters aufnimmt - dasselbe Element!? Oha, man lernt hier doch nie aus...
                          ...
                          ...Alpträume.
                          Wohl eher feuchte Träume beim "Sich-auf-die-eigene-Originalität-einen-runter..."...

                          P.S. "Name" als Variablen- bzw. Spaltenname, daß PHP das überhaupt zuläßt... In "guten" Programmiersprachen ist das ein geschütztes Wort und würde bei sowas einen Syntax-Fehler bringen...

                          Kommentar


                          • #14
                            Zitat von marie123 Beitrag anzeigen
                            Spalte einer DB-Tabelle und Variable, die den Wert eines Parameters aufnimmt - dasselbe Element!? Oha, man lernt hier doch nie aus...Wohl eher feuchte Träume beim "Sich-auf-die-eigene-Originalität-einen-runter..."...
                            Du bist ein putziges Kerlchen. Versuchs mal mit Selbstreflektion. Frag dich z.B. warum die Threads mit dir immer ausarten. Du bist der mit der Profilneurose. Ich kauf dir auch nicht ab, dass du ein fachliches Konzept nicht von einem technischen unterscheiden kannst. Was soll das also? Hast du keine sinnvolle Argumentation für deine Aussage und willst trotzdem das letzte Wort habe? Oder willst du provozieren?

                            Zitat von marie123 Beitrag anzeigen
                            P.S. "Name" als Variablen- bzw. Spaltenname, daß PHP das überhaupt zuläßt... In "guten" Programmiersprachen ist das ein geschütztes Wort und würde bei sowas einen Syntax-Fehler bringen...
                            Auch hier, was soll das? Hauptsache irgendwie klug tun?

                            Kommentar


                            • #15
                              Zitat von erc Beitrag anzeigen

                              Du bist ein putziges Kerlchen. Versuchs mal mit Selbstreflektion. Frag dich z.B. warum die Threads mit dir immer ausarten. Du bist der mit der Profilneurose. Ich kauf dir auch nicht ab, dass du ein fachliches Konzept nicht von einem technischen unterscheiden kannst. Was soll das also? Hast du keine sinnvolle Argumentation für deine Aussage und willst trotzdem das letzte Wort habe? Oder willst du provozieren?



                              Auch hier, was soll das? Hauptsache irgendwie klug tun?
                              Komm, du weißt schon, warum die Diskussionen ausarten, so intelligent bist du schon. Weiters: Am besten, man fasst sich an die eigene Nase. Z.B.: Ist das hier eine sachliche Argumentation von dir? Ist es doch wohl nicht. Du, protestix , der Kaminmauerer usw., seid diejenigen, die persönlich werden. Was du von mir zitierst, sind sachbezogene Aussagen. "Hast du keine sinnvolle Argumentation..." dagegen, kann ich da nur fragen, deine Worte zitierend. Ich nehme dir auch nicht ab, daß du nicht verstanden hast, welche Tendenz ich hier implizit bei den "Fragern" wie auch bei der Mehrheit der Antwortenden kritisiere und warum ich das tue. Also: Laß uns hier bitte nicht einen Kindergarten aus der Sache machen. Ansonsten von meiner Seite: EOD, du hast gerne das letzte Wort.

                              Kommentar

                              Lädt...
                              X