Ankündigung

Einklappen
Keine Ankündigung bisher.

Darstellen von Ergebnissen einer DB-Abfrage in einer Tabelle mit PDO

Einklappen

Neue Werbung 2019

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

  • #61
    Code:
    SELECT COUNT(the_field) > 0 FROM mytable ...
    sagt dir, ob es finite (nicht NULL) Datensaetze in dieser Spalte gibt.

    Kommentar


    • #62
      Ok Danke! Hab ich das richtig verstanden, dass diese SELECT-Abfrage jetzt keine Daten aus meiner Datenbank abfragt, sondern aus der schon generierten Tabelle mit der id= myTable?

      Hab jetzt nur keinen Plan, wo im Code ich diese Abfrage einbauen muss (am Beginn der while-Schleife?) und wie ich mit der $sql2 weiter verfahre, wenn $sql2 = Select Count(the_field) > 0 FROM myTable ...

      Kommentar


      • #63
        Hab ich das richtig verstanden, dass diese SELECT-Abfrage jetzt keine Daten aus meiner Datenbank abfragt,
        Kommt auf deine Definition von "Daten" an ...

        Hab jetzt nur keinen Plan, wo im Code ich diese Abfrage einbauen muss
        Vor dem eigentlichen Query, damit du die abzufragenden Spalten fixen kannst.

        Kommentar


        • #64
          Zitat von Dormilich Beitrag anzeigen

          Du kannst entweder mit PHP deine Daten selbst analysieren (sh. array_column() & array_filter()) oder du machst einen extra Query, der dir sagt, ob eine Spalte leer ist (COUNT()) (und dann brauchst du die Spalte gar nicht erst mit in den Query nehmen).
          Wie müsste ich denn meine Daten mit array_column bzw. array_filter weiter analysieren, wenn ich das ohnehin schon so mache:

          PHP-Code:

                    $column
          [$k] = array_column($results$field[$k]->name);         //  puts all existing values of a column into the field-name

                   
          if(array_filter($column[$k])) {                               //  displays only those columns with at least one value in it

                  
          echo "<td>" $row[$field[$k]->name] . "</td>"//Prints the data
            
          }
          }
          echo 
          "</tr>"

          Kommentar


          • #65
            Wenn du mysqli nimmst, kannst du das wie bisher machen.

            Kommentar


            • #66
              Und wie würde es klappen, wenn ich PDO nehme?

              Kommentar


              • #67
                Du fragst die DB, ob irgendeine der Spalten keine Daten hat, kürzt den select entsprechend und machst dann eine ganz gewöhnliche Abfrage/Tabellenerstellung.

                Kommentar


                • #68
                  Ok, klingt logisch! Gäbe es da irgendein Beispiel, an dem ich mich orientieren könnte?

                  Kommentar


                  • #69
                    Abgesehen von denen, die hier schon gegeben wurden?

                    Kommentar


                    • #70
                      Ich glaube da gab`s doch schon einen Thread von ihm vor kurzem. Da wurde das doch auch schon erklärt oder ging es da oder hier um etwas anderes?

                      Kommentar


                      • #71
                        Zitat von Greehorn17 Beitrag anzeigen
                        Hallo zusammen,

                        ich habe ein HTML-Formular, über das Daten aus einer Datenbank abgefragt werden können. Die Ergebnisse werden dann in einer HTML-Tabelle dargestellt. Das funktioniert mit folgendem Code wunderbar:
                        ...
                        PHP-Code:
                        $sql "SELECT DISTINCT $selection FROM $tabelle WHERE $where";

                        $result mysqli_query($db$sql) ... 
                        Da hier jedoch die Gefahr von SQL-Injection besteht, möchte ich das ganze jetzt mit PDO machen: ...
                        Zitat von hausl Beitrag anzeigen
                        Prepared Statments kann mysqli_ auch.
                        In Post #6 habe ich auch schon darauf hingewiesen das PDO nicht "nötig" ist, wenn er schon mysqli_ nutzt. Aber bitte.
                        The string "()()" is not palindrom but the String "())(" is.

                        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


                        • #72
                          Sind Prepared Statements in mysqli hinsichtlich SQL-Injection auch so sicher wie in PDO, hausl?

                          Hab nur leider noch nichts davon gelesen, weil man praktisch immer bei PDO landet, wenn man nach Prepared Statements und Schutz vor SQL-Injection sucht.

                          Kommentar


                          • #73
                            https://de.wikipedia.org/wiki/Prepared_Statement
                            The string "()()" is not palindrom but the String "())(" is.

                            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


                            • #74
                              Zitat von Greehorn17 Beitrag anzeigen
                              Hab nur leider noch nichts davon gelesen, weil man praktisch immer bei PDO landet, wenn man nach Prepared Statements und Schutz vor SQL-Injection sucht.
                              hast du dir mal angeschaut, wie PS in mysqli gemacht werden?

                              Kommentar


                              • #75
                                Hallo,

                                habe mich jetzt eingehend mit Mysqli Prepared Statements beschäftigt und hab es auch schon geschafft, sie in mein Script so zu integrieren, dass alle Funktionen wieder klappen!

                                Allerdings haben sich noch 2 Fragen ergeben:

                                1. Bei Prepared Statements in Mysqli wird ja immer ein "?" als Platzhalter verwendet. Besteht hier bei vielen variablen Parametern nicht die Gefahr einer Verwechslung? Im Gegensatz dazu sind in PDO die Platzhalter ja eindeutig benannt (z.B. WHERE Name = :name). Nehme mal an, dass in Mysqli die richtige Reihenfolge entscheidend ist.

                                2. Bei allen Beispielen, die ich gefunden habe, ging es um Statements in der WHERE-Clause. Habe kein einziges Beispiel mit JOINS gefunden. Liegt das daran, dass bei JOINS vielleicht kein Risiko besteht, wenn ich z.B. folgendes habe und color1, color2 und color3 von außen eingegeben wurden?

                                PHP-Code:

                                SELECT DISTINCT
                                         pm
                                .Name
                                FROM
                                         product_main pm
                                INNER JOIN 
                                (

                                         
                                SELECT
                                                   pm
                                .master_idpm.Name,
                                         
                                COUNT
                                                   
                                (col.color_id) AS exclude_count
                                         FROM
                                                   product_main pm
                                         LEFT JOIN
                                                   color_table col ON pm
                                .master_id col.color_id
                                                   
                                AND col.product_color
                                         IN
                                                   
                                ('color1'' color2'' color3')
                                         
                                GROUP BY
                                                   pm
                                .master_idpm.Name)

                                e ON e.master_id pm.master_id
                                         
                                AND
                                                   
                                e.exclude_count <

                                Kommentar

                                Lädt...
                                X