Ankündigung

Einklappen
Keine Ankündigung bisher.

UPDATE ... SET '$php_var' = ...

Einklappen

Neue Werbung 2019

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

  • UPDATE ... SET '$php_var' = ...

    Ich habe eben einen Fehler in meinem Skript entdeckt. Es ist als würde es diese Zeile einfach überspringen! Durch Testen hab ich gemerkt, dass PHP scheinbar ein Problem damit hab, wenn ich eine Variable benutze für den Namen einer Tabellenspalte. Geht das denn wirklich nicht?

    $upgrade = mysqli_query($db, "UPDATE villages SET '$building' = '2' WHERE id = '$villageId'");

  • #2
    Auf den ersten Blick würde ich sagen, deine Query ist falsch. Für Spalten nimmt man nämlich keine einfachen Anführungsstriche ' ' , sondern wenn überhaupt backticks ` `



    Für uha hau ich auch leerzeichen rein, um missverständnisse aufkommen zu lassen.
    Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

    Kommentar


    • #3
      Zitat von Geromel Beitrag anzeigen
      sondern wenn überhaupt backticks ``
      Nicht "wenn überhaupt", besser ist grundsätzlich.
      Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

      Kommentar


      • #4
        uha das sollten zwei einfache sein
        Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

        Kommentar


        • #5
          Ich weiß, du hast gesagt, dass man, wenn überhaupt, Backticks nehmen soll. Man sollte Backticks grundsätzlich, also immer, nehmen. Auch wenn die Backticks nicht zwingend nötig sind, solange man kein reserviertes Wort als Tabellen- bzw. Spaltennamen hat, sollte man sich das angewöhnen.
          Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

          Kommentar


          • #6
            Jetzt versteh ich deine Antwort. Sicher grundsätzlich sollte man backticks verwenden. Damit hast du absolut recht. Trotzdem, würdest du (TE) das ganze debuggen, wie man es bei Fehlern tut, wärst du sicher selbst daraufgekommen, dass deine Query syntaktisch nicht korrekt ist.
            Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

            Kommentar


            • #7
              Geht das denn wirklich nicht?
              http://php-de.github.io/jumpto/sql/#...ehler-ausgeben

              http://php-de.github.io/jumpto/sql/#...query-ausgeben
              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


              • #8
                Dankeschön. Funktioniert!
                Damit komme ich zu einem weiteren kleinen Problem. Ich habe eine Funktion, sie returnt mir einen Integer, den ich hier einsetzen möchte.
                Also UPDATE ... SET `$building`= 'newLevel($building)'
                Das würde ich sehr gerne machen. Das funktioniert allerdings nur als Variable $var, wenn ich davor $var = newLevel($building) gemacht habe. Hat da noch jemand einen Tipp?

                Kommentar


                • #9
                  Was brichst du dir so einen ab?

                  PHP-Code:
                  $integer newLevel($building);
                  // Query ... SET ... = '$integer' ... 
                  Zu beachten SQL-Injection und richtige Stringverkettung...
                  Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                  Kommentar


                  • #10
                    Zitat von Geromel Beitrag anzeigen
                    Was brichst du dir so einen ab?

                    PHP-Code:
                    $integer newLevel($building);
                    // Query ... SET ... = '$integer' ... 
                    Zu beachten SQL-Injection und richtige Stringverkettung...
                    Ähm.. ist das jetzt als Vorschlag dafür gemeint wie ich das machen sollte?
                    Denn klar, das ginge. Aber MUSS man das auch so machen? Oder gibt es eine Syntax die es mir erlaubt, die Funktion in der Query abzurufen?

                    Kommentar


                    • #11
                      Ja, anständige String-Konkatenation.
                      (Google weiß, was das ist)
                      [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                      Kommentar


                      • #12
                        ich empfinde es nur etwas komplizierter später das zeug zu warten, wenn du Funktionen direkt in die Query einbaust. Ist aber Geschmacksache, ob du nun mit einem Zwischenschritt mehr oder weniger arbeitest. Ansonsten wurde hier glaub alles schon erläutert.
                        Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                        Kommentar


                        • #13
                          Hallöchen,

                          Zitat von uha Beitrag anzeigen
                          Ich weiß, du hast gesagt, dass man, wenn überhaupt, Backticks nehmen soll. Man sollte Backticks grundsätzlich, also immer, nehmen. Auch wenn die Backticks nicht zwingend nötig sind, solange man kein reserviertes Wort als Tabellen- bzw. Spaltennamen hat, sollte man sich das angewöhnen.
                          Seh ich nicht so. Should I use backticks or not when escaping keywords in MySQL?. Ich vermeide lediglich reservierte Schlüsselwörter in Spaltennamen und sehe ansonsten keinen Vorteil in den Backticks.

                          Viele Grüße,
                          lotti
                          [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

                          Kommentar

                          Lädt...
                          X