Quotes bei assoz. Array-Keys

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

  • Quotes bei assoz. Array-Keys

    Shurakai hat mich dazu gebracht statt $_GET[var] in Zukunft $_GET['var'] zu schreiben.
    Jetzt bin ich da allerdings auf ein Problem gestoßen.
    ... doch seht selbst:

    Um SQL-Querys übersichtlich zu halten sehen die bei mir normalerweise so aus:
    PHP-Code:
    $sql "
      SELECT
        *
      FROM
        
    $tabelle1
      WHERE
        zeile3 = 
    $var
      ;
    "

    das Problem ist nun: setze ich nun statt $var $_GET['var'] o.ä. ein, dann bekomme ich einen Error wegen der Quotes. $_GET[var] get dagegen.
    ... normalerweise sollten sich Single- und Doublequotes doch gegenseitig schachteln lassen
    ... auch escapen bringt nichts


    Meine Frage: Wie löse ich das Problem, ohne Teilstrings mit den Punkt-Operator zu verketten?
    (... es geht schließlich um Übersichtlichkeit!)


    Herzlichen Dank im Vorraus
    [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

    [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

    [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
    (from here)

  • #2
    Re: Quotes bei assoz. Array-Keys

    Original geschrieben von Meillo
    Wie löse ich das Problem, ohne Teilstrings mit den Punkt-Operator zu verketten?
    (... es geht schließlich um Übersichtlichkeit!)
    Du löst es, indem du den String sauber auftrennst, und Variablen und Stringteile mit dem Verkettungsoperator zusammenfügst - eben der Übersichtlichkeit wegen.


    Btw: RTFM!
    Im Manual steht auch, wie's geht, wenn du deine unübersichtliche Syntax unbedingt beibehalten willst ...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      (... es geht schließlich um Übersichtlichkeit!)
      gerade dann trennt man den string auf ....

      PHP-Code:
      $sql '
        SELECT
          *
        FROM
          '
      .$tabelle1.'
        WHERE
          zeile3 = "'
      .$_GET['var'].'"'
      ... zumal du ja auch noch mysql_real_escape_string() verwenden willst/musst/sollst.

      PHP-Code:
      $sql '
        SELECT
          *
        FROM
          '
      .$tabelle1.'
        WHERE
          zeile3 = "'
      .mysql_real_escape_string($_GET['var']).'"'
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        sauber ist es imho, die strings zu verketten ... gerade WEGEN der übersichtlichkeit.

        PHP-Code:
        // was ist hier unübersichtlich?
        $sql "
          SELECT
            *
          FROM
            '.
        $tabelle1.'
          WHERE
            zeile3 = "
        .$var."
          ;
        "

        ansonsten die vars in {} einfassen, sonst gibts bei arrays die probleme.

        btw: $_GET[var] wirft in scharfer umgebung eine "undefined constant"
        btw2: das semikolon am ende des sql-statements macht dir bestimmt mal probleme
        Kissolino.com

        Kommentar


        • #5
          oki, oki .... danke für den "Klaps" auf den Hinterkopf

          ... ich werd' mal sehen


          --

          wurzel
          // was ist hier unübersichtlich?
          ... dann mach das mal mit 25 Vars
          [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

          [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

          [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
          (from here)

          Kommentar


          • #6
            Original geschrieben von Meillo
            ... dann mach das mal mit 25 Vars
            PHP-Code:
            foreach($_GET as $k=>$v)
            {
                
            $s[] = chr(10) .' `'.$k.'` = "'.mysql_real_escape_string($v).'"';
            }
            $sql 'SELECT 
                       bla1, 
                       bla2,
                       bla3
                  FROM blubb 
                  WHERE '
            .implode(' AND '$s); 
            ein fauler schelm, könnte das so machen. vorher noch werte prüfen und überflüssige werte löschen.
            Kissolino.com

            Kommentar


            • #7
              ... da hab ich jetzt schon schmunzeln müssen


              Ich denke, dass du weißt, dass ich DAS nicht meinte ... und jedem sollten die gewissen Probleme beim Gegensatz "Übersichtlichkeit vs. gut strukturierter Code" klar sein


              aber habe ich ja die Antwort auf meine Frage erhalten ( ${_GET['something']} wer's überlesen haben sollte)




              über euren Rat werde ich mir Gedanken machen
              ... das ist halt immer ein Kompromiss!

              dennoch Danke für eure Beiträge - ich werd in mich gehen
              [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

              [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

              [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
              (from here)

              Kommentar

              Lädt...
              X