Problem mit abfragesyntax

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

  • Problem mit abfragesyntax

    ich habe mien erste mysql anfrage mit php geschrieben. beim testen des u.a. scripts erhalte ich immer eine fehlermeldung wenn ich auf $ergebnis zugreifen möchte. wenn ich in selfphp nachlese müsste ich die variable richtig initialisert haben. wo liegt mein fehler. danke für eure hilfe.
    in der datenbank habe ich 4 datensätze erfasst.

    scriptauszug

    //Verbindung zu MYSQL
    $conn = mysql_connect($dbserver, $dbuser, $dbpass)
    //Oder wenn das nicht funktioniert hat
    or die("Es konnte keine Verbindung zur Datenbank hergestellt werden");
    //kontrollausgabe
    echo"Wenn ich das lesen kann, wurde die verbindung hergestellt";
    //Abfragekriterium
    $query = "SELECT * FROM tbl_info ORDER BY datum DESC ";
    //ausführen der Abfrage
    $ergebnis = mysql_query($query, $conn); //hier müsste die Ursache sein
    // ausgabe der abfrage, diesen teil habe ich abgeschrieben
    for ($i=0; $i<mysql_num_fields($ergebnis); $i++) //Fehler hier
    { echo mysql_field_name($ergebnis, $i)." ";};
    echo "<BR><BR>";
    while ($zeile = mysql_fetch_row($ergebnis)) // Fehler hier
    {for ($i=0; $i<mysql_num_fields($ergebnis); $i++)
    {echo $zeile[$i]." | ";};
    echo "<BR>";};
    // Anzahl Datensätze
    echo mysql_num_rows($ergebnis); // Fehler hier
    // speicher freigeben
    mysql_free_result($ergebnis); // Fehler hier
    // Verbindung beenden
    mysql_close($conn);

  • #2
    mach mal aus
    PHP-Code:
    $ergebnis mysql_query($query$conn); 
    ein
    PHP-Code:
    $ergebnis mysql_query($query$conn) or die(mysql_error()); 
    hast du mal probiert die abfrage in phpmyadmin abzusetzen? geht's da?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3

      ich habe mir mal erlaubt einige veränderungen zu machen.

      1. datenbank ausgewählt.
      2. einige schleifen mittels {} eingegrenzt
      3. code geordnet.
      4. code mit code-tags gepostet. (kann man besser lesen)

      99. nicht getestet....

      PHP-Code:
      <?php

        
      //Verbindung zu MYSQL                              //Oder wenn das nicht funktioniert hat
        
      $conn mysql_connect($dbserver$dbuser$dbpass) or die("Es konnte keine Verbindung zur Datenbank hergestellt werden");
        
      // Datenbank auswählen
        
      mysql_select_db"DEINEDATENBANK" ) or die("Unable to select database");

        
      //kontrollausgabe
        
      echo "Wenn ich das lesen kann, wurde die verbindung hergestellt und die Datenbank gewählt.";

        
      //Abfragekriterium
        
      $query "SELECT * FROM tbl_info ORDER BY datum DESC ";

        
      //ausführen der Abfrage
        
      $ergebnis mysql_query($query);
        
        
      // ausgabe der abfrage, diesen teil habe ich abgeschrieben
        
      for ($i=0$i<mysql_num_fields($ergebnis); $i++) {
          echo 
      mysql_field_name($ergebnis$i)." ";};
          echo 
      "<BR><BR>";
          while (
      $zeile mysql_fetch_row($ergebnis)) {
            for (
      $i=0$i<mysql_num_fields($ergebnis); $i++) {
              echo 
      $zeile[$i]." | ";
            }
            echo 
      "<BR>";
          }
          
      // Anzahl Datensätze
          
      echo mysql_num_rows($ergebnis);
        }
        
      // speicher freigeben
        
      mysql_free_result($ergebnis);

        
      // Verbindung beenden
        
      mysql_close($conn);

      ?>
      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
        No Database

        mit PHPmyAdmin funktioniert das wunderbar; hieraus habe ich die selectanweisung kopiert.

        als fehlermeldung bekomme ich jetzt, den hinweis, das ich keine Datenbank ausgewählt habe.

        habe jetzt über die zeile
        $query = "SELECT * FROM tbl_info ORDER BY datum DESC ";

        noch die zeile
        mysql_select_db ($dbname, $conn);
        eingefügt; wobei $dbname den name der datenbank enthält

        der fehler belibt jedoch bestehen.

        Kommentar


        • #5
          was steht denn in $dbname drin?
          gib das mal aus.

          PHP-Code:
          echo $dbname
          hast du meinen code auch mal getestet?
          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


          • #6
            habe bei deinem code nach
            PHP-Code:
              echo mysql_num_rows($ergebnis); 
            die geschweifte klammer entfernt - da ich einen parse fehler bekam.

            in $dbname steht DB17300
            wie in der überschrift von phpmyadmin wenn ich mir die tabell anzeigen lasse
            -> Datenbank DB17300 - Tabelle tbl_info auf localhost

            bricht allerdings immer noch ab, weil ich kine datenbank auswählen kann. dien script habe ich an der stelle "datenbanknahme" angepasst. mit echo $dbname bekomme ich auch DB17300 ausgegeben.

            Kommentar


            • #7
              ok. poste mal bitte dein tabellenstruktur. ich mache das mal anders...
              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


              • #8
                das ist meine tabelle

                # phpMyAdmin MySQL-Dump
                # version 2.2.3
                # http://phpwizard.net/phpMyAdmin/
                # http://phpmyadmin.sourceforge.net/ (download page)
                #
                # Host: localhost
                # Erstellungszeit: 12. Jan 2003 um 13:30
                # Server Version: 3.23.47
                # PHP Version: 4.1.1
                # Datenbank : `DB17300`
                # --------------------------------------------------------

                #
                # Tabellenstruktur für Tabelle `tbl_info`
                #

                CREATE TABLE tbl_info (
                id int(11) NOT NULL auto_increment,
                datum date NOT NULL default '0000-00-00',
                betreff varchar(50) NOT NULL default '',
                info text NOT NULL,
                autor varchar(50) NOT NULL default '',
                speicherung datetime NOT NULL default '0000-00-00 00:00:00',
                PRIMARY KEY (id),
                KEY datum (datum)
                ) TYPE=MyISAM COMMENT='Tabelle um den Infoservice zu verwalten';

                Kommentar


                • #9
                  jetzt müsste es aber gehen, wenn ich mich nicht verschaut habe.

                  PHP-Code:
                  <?php

                    
                  //Verbindung zu MYSQL                              //Oder wenn das nicht funktioniert hat
                    
                  $conn mysql_connect($dbserver$dbuser$dbpass) or die("Es konnte keine Verbindung zur Datenbank hergestellt werden");
                    
                  // Datenbank auswählen
                    
                  mysql_select_db"DB17300" ) or die("Unable to select database");

                    
                  //kontrollausgabe
                    
                  echo "Wenn ich das lesen kann, wurde die verbindung hergestellt und die Datenbank gewählt.";

                    
                  //Abfragekriterium
                    
                  $query "SELECT * FROM tbl_info ORDER BY datum DESC ";

                    
                  //ausführen der Abfrage
                    
                  $ergebnis mysql_query($query);

                    
                  // Anzahl Datensätze zwischenspeichern
                    
                  $anzahl mysql_num_rows($ergebnis);

                    
                  // ausgabe durch while schleife  
                    
                  while ($zeile mysql_fetch_row($ergebnis)) {
                      echo 
                  "<BR><BR>";
                      echo 
                  $zeile["id"]." | ";
                      echo 
                  $zeile["datum"]." | ";
                      echo 
                  $zeile["betreff"]." | ";
                      echo 
                  $zeile["info"]." | ";
                      echo 
                  $zeile["autor"]." | ";
                      echo 
                  $zeile["speicherung"];
                    }

                    
                  // speicher freigeben
                    
                  mysql_free_result($ergebnis);

                    
                  // Verbindung beenden
                    
                  mysql_close($conn);

                  ?>
                  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


                  • #10
                    Tut mir leid, das ich etwa länger gebraucht habe.

                    Erstmal grossen Dank für Deine Hilfe; es funktioniert.

                    eine Frage habe ich jedoch noch: Wo lag mein Fehler?

                    Wie geschrieben: Vielen Dank!!!!

                    Kommentar


                    • #11
                      du hattest irgendwelchen code kopiert, von dem ich auch nciht genau wusste, was du damit bewirken wolltest.

                      tatsache ist... der code war so dynamisch in der ausgabe, dass es egal wäre, wieviele spalten die tabelle hat. bin da auch nicht auf die schnelle durchgestiegen.

                      ich habe das so gemacht, dass ich ein normales select auf die tabelle gemacht habe. dann ein mysql_fetch_array in einer while.schleife. damit habe ich immer einen datensatz komplett in $zeile . nun kannte ich die namen der felder nciht, daher solltest du die tabellenstruktur posten.
                      mit diesem namen konnte ich dann geziehlt die ausgabe machen. kommt ein feld in der tabelle hinzu, wird es jedoch nicht automatisch ausgegeben. das musst du dann manuell über $zeile["derneuefeldname"] machen.
                      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

                      Lädt...
                      X