Ankündigung

Einklappen
Keine Ankündigung bisher.

Komisches Verhalten PHP/MySQL Skript

Einklappen

Neue Werbung 2019

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

  • Komisches Verhalten PHP/MySQL Skript

    Hallo zusammen

    Ich bin hier mit einem ganz komischen Verhalten meines Skripts konfrontiert und blicke irgendwie nicht mehr durch. Vielleicht kann mir ja jemand helfen.


    Code:
    //$getData = "SELECT vorname, pfadiname, nachname FROM scoutaddress ";
    $getData = "SELECT ".$query." FROM scoutaddress".$bedingung_funktion.$bedingung_gruppe;
    
    echo $getData;
    echo "
    ";
    
    $result  = mysql_query( $getData );
    echo mysql_error ();
    Ich erstelle in der Variablen $getData einen dynamischen SQL-Query der sich je nach Benutzerauswahl ändert. Zu Testzwecken gebe ich den Wert der Variablen $getData und die MySQL Fehlermeldung aus.

    Wenn ich das Skript so ausführe erhalte ich folgende Ausgabe und Fehlermeldung:

    Code:
    SELECT vorname, pfadiname, nachname FROM scoutaddress
    Unknown column 'vorname' in 'field list'
    Normalerweise würde ich sagen, dass in der DB die Spalte "vorname" nicht vorhanden ist, dem ist aber definitiv nicht so. Wenn ich jetzt zum Testen die Variable $getData auf den Wert der vorherigen Ausgabe setze (indem ich die Variable von Hand definiere oder die Ausgabe im MyAdmin teste) erhalte ich keine Fehlermeldung und es funktioniert wunderbar.

    Ich sehe den Unterschied nicht zwischen dem dynamischen $getData und dem statischen bei dem es funktionert. Kann mir da vielleicht jemand helfen?

    Merci und Gruss
    Säsch

  • #2
    die einzigste Idee, die ich habe ist, das in $query etwas falsches steht!

    wilko

    Kommentar


    • #3
      Nein das ist es nicht. Ich gebe ja den Wert aus und setze, um es zu testen, die Variable von Hand (siehe auskommentierter Code ganz oben) auf den vorherigen Ausgabewert, dann funktionierts plötzlich.

      Kommentar


      • #4
        Das wird ja nur ein teil des scripts sein .. und ich weis nicht, was da sonst noch vorher passiert ...




        Code:
        if (!$result = mysql_query($getData)) {
            print mysql_error(); 
        }

        Kommentar


        • #5
          mysql_query("SELECT '".$query."' FROM scoutaddress ".$bedingung_funktion.$bedingung_gruppe) or die(mysql_error());

          echo "SELECT '".$query."' FROM scoutaddress ".$bedingung_funktion.$bedingung_gruppe";
          echo "
          ";

          Kommentar


          • #6
            Inspriert von cgdesigns Antwort habe ich den Abfrageteil jetzt so gemacht:

            Code:
            $result = mysql_query("SELECT '".$query."' FROM scoutaddress ".$bedingung_funktion.$bedingung_gruppe) or die(mysql_error());
            Und siehe da es funktioniert. Vielen Dank! Aber warum funktioniert mein Code oben nicht? Der macht ja eigentlich das gleiche einfach nur über eine Variable

            Kommentar


            • #7
              die ' ' machen es aus!

              Kommentar


              • #8
                Vielen Dank cgdesign.

                Vielleicht kann jemand gleich noch bei meinem zweiten Problem helfen. Ich würde jetzt gerne den Output der ja je nach Usereingabe sich verändert (bzw. der SQL Query verändert sich) ausgeben. Ich habe bisher nur die Möglichkeit gefunden jedes Feld einzeln in einer Schleife zu definieren. Zum Beispiel so:
                Code:
                $i=0;
                while ($i < $num) {
                
                $vorname=mysql_result($result,$i,"vorname");
                $nachname=mysql_result($result,$i,"nachname");
                //... hier muss jedes Feld definiert werden
                
                echo "$vorname $nachname";
                
                $i++;
                }
                Gibt es da eine elegantere Möglichkeit die automatisch nur die Felder benutzt die auch vom Query abgefragt wurden?

                Kommentar


                • #9
                  deine Frage versteh ich nicht ganz

                  Kommentar


                  • #10
                    Habe im Netz gefunden was ich gesucht habe. So muss ich die Felder nicht alle definieren sondern der Skript gibt in der Tabelle nur die Felder aus die auch vom Query gesucht wurden.
                    Code:
                    <table border="1" width="100%"><tr><?
                    
                    if (mysql_num_rows($result) > 0) {
                       for ($i = 0; $i<mysql_num_fields($result); $i++) {
                               echo "<td align=center>[b]" . mysql_field_name($result, $i) . "</td>";
                       }
                    }
                    
                    ?></tr><?
                    
                    if (mysql_num_rows($result) > 0) {
                       for ($j = 0; $j<mysql_num_rows($result); $j++) {
                    
                           ?><tr><?php
                    
                           for ($k = 0; $k<mysql_num_fields($result); $k++) {
                               echo "<td align=center>" . mysql_result($result,$j, $k) . "</td>";
                           }
                    
                           ?></tr><?php
                    
                       }
                    }
                    
                    ?></table>

                    Kommentar

                    Lädt...
                    X