Regina Schaukrug: Grundsatzdiskussion bind ./. fetch_assoc und prepare ./. mysqli_real_escape_string

Beitrag lesen

data binding …/… "klassische" Fetch-Technik

wenn ich nach einer ehrlichen Antwort gefragt würde, was ich vom "data binding" halte, dann wäre meine Antwort ganz klar "Regelmäßig gar nichts!"

$result -> fetch_assoc() liefert alles, was benötigt wird. Wer unbedingt meint, dass er die Elemente seines Arrays anders benennen muss als die Spalten der Datenbank, der denkt aus meiner Sicht schon an dem Punkt etwas sehr falsches. Auch das Binden von Nicht-Arrays als Variablen ist aus meiner Sicht unnötig und sozusagen "semantisch falsch", weil mir als Progger dann der Sinnzusammenhang zwischen der Zeile einer Tabelle und den Daten in der Variable verloren geht.

Selbst wenn ich beim Planen was falsch gemacht habe, dann kann ich andere Spaltennamen im SQL bestimmen (SELECT foo AS bar)

$result -> fetch_row() hat aus meiner Sicht nur dann eine Berechtigung, wenn ich nur einen Wert erwarte - oder aber die Anzahl der Werte in einer Zeile nicht vorher bekannt ist (Man denke an das regelmäßig falsche SELECT * FROM ...) und ich den Spalten-Name nicht brauche. Aber selbst dann braucht man das binden nicht, im letzten Fall funktionierts nicht mal.

aber erst:

SELECT foo, bar from

dann

$stmt -> bind_result ( $foo, $bar );

dann

while ( $stmt -> fetch () ) {
    $tabelle[] = array( 
                        'foo' => $foo,
                        'bar' => $bar
                      );
}

ist aus meiner Sicht eine enorme Verschwendung geistiger Leistung und Fingergelenkhaltbarkeit weil:

  $tabelle = array();
	if ( $result = $mysqli -> query( $query ) ) {
      while ( $row = $result -> fetch_row()) {
          $tabelle[] = $row;
      }
  } else { # Fehlerbehandlung

es mit ganz wenig Aufwand tut und keine besondere geistige Leistung erfordert.

Die Diskussion prepare vs query hatten wir schon öfter; query ist kompakter, dafür kannst Du Dir in den Fuß schießen wenn Du die Parameter unsauber ins Statement einbaust (Kontextwechsel-Problem).

Naja. Das Kontext-Wechsel-Problem kann man eigentlich ausschließen wenn man wie hier das Datum und die Empfängerliste vorher selbst zusammenbaut und also ausschließen kann, dass vergiftetes Zeug in den Parametern vorkommt. Selbst wenn man das nicht ausschließen kann dann gibt es das funktionierende mysqli_real_escape_string(). Das prepare lohnt eigentlich nur, wenn ich eine, bis auf die Parameter identische SQL-Abfrage mehrfach stelle, also nach dem $stmt -> prepare(…) mehrfach mit neuen Parametern versehe und jeweils abschicke.

Es könnte hier zwar sehr gut eine solche mehrfach gestellte Abfrage geben, nur wird das durch die Funktion gerade nicht so realisiert. Dazu wäre hier ein Objekt optimal gewesen in dem $stmt isoliert ist und erhalten bleibt. (Es gänge funktional auch wenn man alle Abfragen nacheinander stellt und die Ergebnisse "per Day" in einen Array ablegt und sich dann, beim Zusammenbau des Tags, wieder herauszieht.

Aber selbst dann könnte man sich das Stellen einer mehrfachen Abfrage schenken, weil Jahr, Tag und Monat sich auch gut in die Antwort aufnehmen lassen...

0 117

KW als Spalte einfügen

Barksalot
  • php
  1. 1
    Regina Schaukrug
    1. 0
      Barksalot
      1. 0
        Regina Schaukrug
        1. 0
          Barksalot
          1. 1
            Regina Schaukrug
            1. 0
              Barksalot
              1. 1
                Regina Schaukrug
                1. 0
                  Barksalot
              2. 0
                Rolf B
                • php
                • programmiertechnik
                1. 0
                  Barksalot
                  1. 0
                    Rolf B
                    1. 0
                      beatovich
                2. 0
                  Barksalot
                  1. 0
                    Rolf B
                    1. 0
                      Barksalot
                      1. 0
                        Rolf B
                      2. 1
                        Rolf B
                        1. 0
                          Barksalot
                      3. 0

                        Hier mal meine Vorgehensweise

                        Regina Schaukrug
                        1. 0

                          (Fortsetzung)

                          Regina Schaukrug
                        2. 0

                          2. Fortsetzung: Termine

                          Regina Schaukrug
                          1. 0
                            Barksalot
                            1. 0
                              Regina Schaukrug
                              1. 0
                                Barksalot
                                1. 0
                                  Regina Schaukrug
                                  1. 0
                                    Barksalot
                                    1. 0
                                      Regina Schaukrug
                                      1. 0
                                        Barksalot
                                        1. 0
                                          Regina Schaukrug
                                    2. 0
                                      Rolf B
                              2. 0
                                beatovich
                                1. 0
                                  Regina Schaukrug
                                  1. 0
                                    beatovich
                              3. 0
                                Regina Schaukrug
                              4. 0
                                Rolf B
                  2. 2
                    Rolf B
                  3. 2
                    Rolf B
                    1. 0
                      MudGuard
                      1. 0
                        Rolf B
                        1. 0
                          dedlfix
                      2. 0
                        Regina Schaukrug
                    2. 0
                      Barksalot
                      1. 0
                        Regina Schaukrug
                        1. 0
                          Barksalot
                          1. 0
                            Regina Schaukrug
                            1. 0
                              Barksalot
                      2. 0
                        Rolf B
                        1. 0
                          Barksalot
                          1. 0
                            Rolf B
                            1. 0
                              Barksalot
                              1. 0
                                Regina Schaukrug
                                1. 0
                                  Barksalot
                                  1. 0
                                    Regina Schaukrug
                                    1. 0
                                      Barksalot
                                      1. 0
                                        Regina Schaukrug
                                        1. 0
                                          Barksalot
                                          1. 0
                                            Regina Schaukrug
                                            1. 0
                                              Barksalot
                                              1. 0
                                                Regina Schaukrug
                                                1. 0
                                                  Barksalot
                                                  1. 0
                                                    Regina Schaukrug
                                                    1. 0
                                                      Barksalot
                                                      1. 0
                                                        Regina Schaukrug
                                                        1. 0
                                                          Barksalot
                                                          1. 0
                                                            Regina Schaukrug
                                                            1. 0
                                                              Barksalot
                                                              1. 0

                                                                Anmerkung zu $mysqli: KW als Spalte einfügen

                                                                Barksalot
                                                                1. 0
                                                                  Regina Schaukrug
                                                                  1. 0
                                                                    Barksalot
                                                                    1. 0
                                                                      Regina Schaukrug
                                                                      1. 0
                                                                        Barksalot
                                                                        1. 0
                                                                          Rolf B
                                                                        2. 0
                                                                          Regina Schaukrug
                                                                          1. 0
                                                                            Barksalot
                                                                            1. 0
                                                                              Regina Schaukrug
                                                                              1. 0
                                                                                Barksalot
                                                                                1. 0
                                                                                  Regina Schaukrug
                                                                                  1. 0
                                                                                    Barksalot
                                                                                2. 0
                                                                                  Barksalot
                                                                                  1. 0
                                                                                    Rolf B
                                                                                    1. 0
                                                                                      Barksalot
                                                                                      1. 1
                                                                                        Regina Schaukrug
                                                                                        1. 0
                                                                                          Barksalot
                                                                                          1. 0
                                                                                            Rolf B
                                                                                      2. 0
                                                                                        Rolf B
                                                                                        1. 0
                                                                                          Barksalot
                                                                                  2. 0
                                                                                    Regina Schaukrug
                                                                                    1. 0
                                                                                      Barksalot
                                                                                      1. 0
                                                                                        Regina Schaukrug
                                                                                        1. 0
                                                                                          Barksalot
                                                                                          1. 0
                                                                                            Regina Schaukrug
                                                                                            1. 0
                                                                                              Barksalot
                                                                                              1. 0
                                                                                                Rolf B
                                                                                              2. 0
                                                                                                Regina Schaukrug
                                                                2. 0
                                                                  Rolf B
                                                                  1. 0
                                                                    Barksalot
                                                                    1. 0
                                                                      Rolf B
                3. 0
                  pl
                  • perl
                  • programmiertechnik
                  1. 0
                    Rolf B
                    1. 0
                      pl
                    2. 0
                      pl
          2. 0

            Einträge anordnen

            Barksalot
            1. 0
              pl
              1. 0
                Barksalot
                1. 0
                  Rolf B
                  1. 0
                    pl
  2. 1

    Danke!

    Barksalot
    1. 1
      Rolf B
      1. 0
        Barksalot
        1. 0
          Rolf B
          1. 0

            Grundsatzdiskussion bind ./. fetch_assoc und prepare ./. mysqli_real_escape_string

            Regina Schaukrug
            1. 0
              Rolf B
              1. 0
                Barksalot
                1. 0
                  Regina Schaukrug
                  1. 0
                    Rolf B
                    1. 0

                      Humor...

                      Regina Schaukrug
                      • menschelei