Ankündigung

Einklappen
Keine Ankündigung bisher.

Simple und sichere Suche per PHP

Einklappen

Neue Werbung 2019

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

  • #16
    Zitat von hellbringer Beitrag anzeigen
    PHP-Code:
    $sql "
    INSERT INTO my_table (my_column)
    VALUES (" 
    . ($value === null 'NULL' "'" $db->real_escape_string($value) . "'") . ")
    "

    Das ist alles nicht so wirklich ausgereift. Wieso Integer und Float in Singlequotes?
    Zitat von VPh Beitrag anzeigen
    Wenn man die korrekte Escape-Funktion im richtigen Moment verwendet (immer und nur wenn man einen String übergibt; nicht bei z.B. Integern);
    Wobei ich das noch korrigieren würde. Durchs Escapen kann man alles laufen lassen, nur im Query dann nicht alles in Singleqoutes packen.

    Kommentar


    • #17
      Zitat von psoido Beitrag anzeigen
      Das ist alles nicht so wirklich ausgereift. Wieso Integer und Float in Singlequotes?
      Weils egal ist. Die Datenbank castet eh automatisch auf den passenden Typ.

      Aber wie gesagt, würde ich sowieso eher zu Prepared Statements raten und nicht Werte in SQL-Code reinfummeln.

      Kommentar


      • #18
        Zitat von hellbringer Beitrag anzeigen
        Wenn du alles anzweifelst, kommst du nicht weiter.
        Besser das, als in die falsche Richtung. Das sagt mir die Erfahrung. Irgendetwas übernehmen, ohne es verstanden zu haben, besser sein lassen und vorher die Zweifel beseitigen. Können sie nicht beseitigt werden, dann bleibts wie es ist. Kanonenfutter mache ich gerne den Weg frei, rein zu meiner Unterhaltung. ^^
        Zitat von hellbringer Beitrag anzeigen
        Weils egal ist. Die Datenbank castet eh automatisch auf den passenden Typ.
        Wenn es eh egal ist, dann kann ich es ja machen wie ich will und erspare der DB das umcasten. Oder ist das wiederum nicht egal?
        Zitat von hellbringer Beitrag anzeigen
        Aber wie gesagt, würde ich sowieso eher zu Prepared Statements raten und nicht Werte in SQL-Code reinfummeln.
        Muss man da genauso, wegen der Angabe eines Typ bei bind_parameter. Da ist das Selbe mit Singlequotes oder nicht. Siehe hier: https://www.php.de/forum/webentwickl...ts#post1575684



        Kommentar


        • #19
          Zitat von psoido Beitrag anzeigen
          Wenn es eh egal ist, dann kann ich es ja machen wie ich will und erspare der DB das umcasten. Oder ist das wiederum nicht egal?
          Die Frage ist, warum willst du das machen? Es ist doch ganz einfach: Werte immer escapen und man macht nichts falsch. Wenn man aber bei jeder Zeile Code überlegt ob man jetzt escapen muss oder nicht, ist das nur eine unnötige mögliche Fehlerquelle.

          Zitat von psoido Beitrag anzeigen
          Muss man da genauso, wegen der Angabe eines Typ bei bind_parameter. Da ist das Selbe mit Singlequotes oder nicht. Siehe hier: https://www.php.de/forum/webentwickl...ts#post1575684
          Ich würde von mysqli abraten, da es eine ziemlich umständliche API ist. Du tust dir und allen anderen im Forum einen Gefallen, wenn du gleich PDO verwenden würdest.

          Kommentar


          • #20
            Zitat von hellbringer Beitrag anzeigen
            Die Frage ist, warum willst du das machen? Es ist doch ganz einfach: Werte immer escapen und man macht nichts falsch. Wenn man aber bei jeder Zeile Code überlegt ob man jetzt escapen muss oder nicht, ist das nur eine unnötige mögliche Fehlerquelle.
            Ich hatte das bereits hier editierend erwähnt:
            Zitat von psoido Beitrag anzeigen
            Durchs Escapen kann man alles laufen lassen, nur im Query dann nicht alles in Singleqoutes packen.
            Zitat von hellbringer Beitrag anzeigen
            Ich würde von mysqli abraten, da es eine ziemlich umständliche API ist. Du tust dir und allen anderen im Forum einen Gefallen, wenn du gleich PDO verwenden würdest.
            Bringst du da nicht etwas durcheinander? Wieso sollte mysqli nur Prozedural sein? Das geht auch Objektorientiert. Also für mich ist PDO = Objektorientiert, oder habe ich da was falsch verstanden?


            Kommentar


            • #21
              Ja, PDO ist => https://www.php.net/manual/de/intro.pdo.php

              Das ist einfach eine andere Schnittstelle als mysqli.

              Kommentar


              • #22
                Achso, es sind zwei verschiedene Sachen gemeint.
                PDO https://www.php.net/manual/de/intro.pdo.php
                mysqli https://www.php.net/manual/de/book.mysqli.php
                Ein bisschen Verwirrung stiften @hellbringer?
                Letztendlich geht es (mittlerweile) um
                https://www.php.net/manual/de/mysqli...statements.php
                und da wird auch mysqli sowie PDO verwendet.
                Diesen Knoten darf jetzt gerne jemand lösen.

                Kommentar


                • #23
                  Nein, da wird nur MYSQLI verwendet. Dort geht es um Prepared Statements für MYSQLI.

                  Kommentar


                  • #24
                    Zitat von jonas3344 Beitrag anzeigen
                    Dort geht es um Prepared Statements für MYSQLI.
                    Und wo ist die PHP Doc zu Prepared Statements für POD?

                    Kommentar


                    • #25
                      Findest du auch selbst mal was? So schwer ist das nicht.

                      https://www.php.net/manual/de/pdo.pr...statements.php

                      Kommentar


                      • #26
                        Dankö! Ich musste ja erstmal selbst drauf kommen, bzw. wurde davon überrascht, dass es 2 (ZWEI!) Prepared Statements Versionen gibt. Dazu gleich eine Frage: Wie viele Versionen gibt es insgesamt?

                        Kommentar


                        • #27
                          Zitat von psoido Beitrag anzeigen
                          Dankö! Ich musste ja erstmal selbst drauf kommen, bzw. wurde davon überrascht, dass es 2 (ZWEI!) Prepared Statements Versionen gibt. Dazu gleich eine Frage: Wie viele Versionen gibt es insgesamt?
                          Das sind keine zwei Versionen von Prepared Statements, sondern das sind zwei verschiedene Datenbank-APIs. PDO ist die neuere, modernere Variante in PHP. Bzw. so neu ist die auch nicht. Die gibts schon seit 15 Jahren.

                          Kommentar


                          • #28
                            @hellbringer: interessant, wie du zwar antwortest, aber die Frage dann doch nicht beantwortest. Dein Interesse zu antworten scheint anders begründet.

                            Kommentar


                            • #29
                              Mysql kennt nur eine Form von Prepared Statements. Die API ist die Schnittstelle zum DBMS von Mysql. Davon gibt es aktuell 2. Alles weitere steht im Handbuch.
                              https://www.php.net/manual/en/mysql.php
                              https://www.php.net/manual/de/mysqli...statements.php

                              Kommentar

                              Lädt...
                              X