Problem mit SELECT-Anweisung für mySQL

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

  • Problem mit SELECT-Anweisung für mySQL

    Ich habe ein Problem mit einer SELECT-Anweisung für MySQL in PHP. Ich habe folgende SELECT:

    Code:
    $sel_produkt = "HS";
    $sel_prodart = "DP";
    
    SELECT * FROM pro_tabelle
        WHERE produkt_fld = "HS"
          AND prodart_fld = "DP";
    Nun erhalte ich folgende Fehlermeldung:

    Code:
    [B][COLOR=crimson]Database error: Unknown column 'HS' in 'where clause'[/B][/COLOR]
    Wenn ich die WHERE-Clausel ändere und schreibe:

    Code:
    SELECT * FROM pro_tabelle
      WHERE prodart_fld = "DP";
    Erhalte ich folgende Fehlermeldung:

    Code:
    [B][COLOR=crimson]Database error: Unknown column 'DP' in 'where clause'[/B][/COLOR]
    Wenn ich die WHERE-Cluasel überhaupt weglasse und schreibe:

    Code:
    SELECT * FROM pro_tabelle
    Erhalte ich keine Fehlermeldung, dafür aber unvollständige Daten. Zum Beispiel sind die Abfrage-Felder 'produkt_fld' und 'prodart_fld' aber auch andere Felder wie 'bruttop_fld', 'mwst_fld' und 'preisalt_fld' leer. Das, obwohl die DB-Tabelle wirklich die Daten vollständig enthält. Der Inhalt der DB-Tabelle sieht wie folgt aus:

    Code:
    Produkt_fld	prodart_fld     bruttop_fld     mwst_fld     nettop_fld     preisalt_fld     Datum_fld
    HS              DP              5.90            0.98         4.92           0.00             2004-09-20

    Wo liegt der fehler? Bitte um Hinweis und Hilfe!

  • #2
    Das riecht nach einem Syntaxfehler... poste mal den ganzen Abfragecode.

    Kommentar


    • #3
      benutze auch mal mysql_error()

      PHP-Code:
      //deins
      SELECT FROM pro_tabelle
          WHERE produkt_fld 
      "HS"
            
      AND prodart_fld "DP";

      //mein Vorschlag
      SELECT FROM pro_tabelle
          WHERE produkt_fld 
      'HS'
            
      AND prodart_fld 'DP'
      mfg
      marc75

      <Platz für anderes>

      Kommentar


      • #4
        wie sieht den der PHP-Block aus, mit dem du diese Abfrage absetzst? Bitte nicht deinen kompletten Code posten, sondern nur von der Definition der Abfrage bis einschließlich die Zeile mit mysql_query.

        Kommentar


        • #5
          Für Marc75: Natürlich verwende ich mysql_error(); ohne diese Error-Abfrage würde kein Programmierer arbeiten. ich
          habe auf das Detail vor und nach der tatsächlichen SELECT-Statment hier verzichtet, weil ich annehm, dass die Leute,
          die die Beiträge hier lesen und begutachten, dies sowieso wissen.

          Für alle: Hier der komplette Code. Und ich finde ehrlich gesagt, keinen Syntaxfehler.


          Code:
          <html>
          <head>
            <title>display products</title>
          </head>
          
          <body>
          <font face="Verdana, Arial, Helvetica">
          
          <!-- *** BEGINN SELECT *** -->
          <?php
              $sel_produkt = "HS";
              $sel_prodart = "AL";
          
              $host = "localhost";
              $usr  = "root";
              $pwd  = "";
              $dbs  = "globweb";
          
          	/**
          	  * -- CONNECT TO DATABASE --
          	**/
          	$cdb = mysql_connect($host, $usr, $pwd);
          	if (!$cdb) {
          	   print "ERROR: " . mysql_error() . "\n";
          	} else {
          	     print "Successfuly Connect to the Database!<br><br>";
          	  }
          
          
          	/**
          	  * select database to use
          	**/
          	mysql_select_db($dbs, $cdb);
          
          
          	/**
          	  *  -- SETUP SQL STATEMENT --
          	**/
          	$sel_prod  = "SELECT * FROM glw_produkte_tab ";
          	$sel_prod .= "WHERE pro_produkt_fld LIKE $sel_produkt ";
          	$sel_prod .= "AND   pro_prodart_fld LIKE $sel_prodart ";
          
          	
          	/**
          	  * -- EXECUTE SQL STATEMENT --
          	**/
          	$exec = mysql_query($sel_prod);
          	if (mysql_error()) {
          	   print "Database Error: " . mysql_error() . "<br><br>";
          	}
          
          
          	/**
          	  * CLOSE DATABASE
          	**/
          	  mysql_close($cdb);
          
          	
          	/**
          	  * display result for the table creation query
          	  * this should be 1 on a success
          	**/
          	if (!mysql_error()) {
          	   $i = 0;
          	   while($row = mysql_fetch_array($exec, MYSQL_ASSOC)) {
          		 $sel_ID	=$row['pro_id_fld'] ;
          		 $sel_produkt	=$row['pro_produkt_fld'];
          		 $sel_prodart	=$row['pro_prodart_fld'];
          		 $sel_bpreisn	=$row['pro_bpreisn_fls'];
          		 $sel_prnmwst	=$row['pro_prnmwst_fld'];
          		 $sel_npreisn	=$row['pro_npreisn_fld'];
          		 $sel_preisalt	=$row['pro_preisalt_fld'];
          		 $sel_datum	=$row['pro_datum_fld'];
          
          		 echo "Prod-ID	  :	$sel_ID<br>";
          		 echo "Produkt	  :	$sel_Produkt<br>";
          		 echo "Produktart :	$sel_Prodart<br>";
          		 echo "Brut.preis :	$sel_bpreisn<br>";
          		 echo "MwSt.	  :	$sel_Prnmwst<br>";
          		 echo "Nettopreis :	$sel_npreisn<br>";
          		 echo "Preis Alt  :	$sel_Preisalt<br>";
          		 echo "Datum	  :	$sel_datum<br><br>";
          	   }
          	}
          	else {
          	   print "Database Error: " . mysql_error() . "<br><br>";
          	}
          ?>
          <!-- *** END SELECT *** -->
          
          </font>
          <br clear=all>
          <br>
          <br>
          <br><br>
          <table align="center">
            <tr>
              <td>
          	<a href="javascript:history.back(1)">Go back</a> to the Mainsite
              </td>
            </tr>
          </table>
          </font>
          </body>
          </html>
          Viel Spaß und auch Danke für jede Hilfe und Hinweis!
          Zuletzt geändert von Armadi; 28.09.2004, 09:50.

          Kommentar


          • #6
            Original geschrieben von Armadi

            Viel Spaß und auch Danke für jede Hilfe und Hinweis!
            Viel Spaß wünsche ich dir auch, denn ich mache jetzt NICHTS mehr
            So 'ne Frechheit. Es ist DEIN Problem nicht unsere ...

            *** closed meinerseits ***

            Kommentar


            • #7
              PHP-Code:
              $sel_produkt "HS";

              $sel_prod  "SELECT * FROM glw_produkte_tab ";
              $sel_prod .= "WHERE pro_produkt_fld LIKE $sel_produkt ";
              $sel_prod .= "AND   pro_prodart_fld LIKE $sel_prodart "
              ergibt nicht, wie du geschrieben hast LIKE "HS" sondern LIKE HSund daher denkt mysql, HS wäre eine spalte, die es aber nicht gibt...


              ist dir schon mal in den sinn gekommen, dir die sql-abfrage die du abschickst und die fehlerhaft ist ausgeben zu lassen?
              nur mal so?
              zum debuggen?
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                entdecke den unterschied:
                PHP-Code:
                    $sel_prod  "SELECT * FROM glw_produkte_tab ";
                    
                $sel_prod .= "WHERE pro_produkt_fld LIKE $sel_produkt ";
                    
                $sel_prod .= "AND   pro_prodart_fld LIKE $sel_prodart ";
                echo 
                $sel_prod;

                                
                $sel_prod  "SELECT * FROM glw_produkte_tab ";
                    
                $sel_prod .= "WHERE pro_produkt_fld LIKE '".$sel_produkt ."' ";
                    
                $sel_prod .= "AND   pro_prodart_fld LIKE '".$sel_prodart."' ";
                echo 
                $sel_prod
                Kissolino.com

                Kommentar


                • #9
                  Für asp2php:
                  Warum flippst du denn aus? Denn du selbst hast es verlangt, meine Abfrage zu posten. Außerdem hat keiner dich aufgefordert zu antworten.
                  Du brauchst nur still zu sein!

                  Für mrhappiness:
                  Natürlich ist mir in den Sinn gekommen, die sql-abfrage ausgeben zu lassen, und das habe ich auch getan. Ich habe die gleiche Fehlermeldung bekommen, die auch du bekommen hast. Daher habe ich das Problem im Formu aufgworfen, damit ich Tips bekomme,
                  und das ist der Sinn dieses Forums.

                  Für Wurzel:
                  Deine Schreibweise mit
                  Code:
                  [COLOR=blue]$sel_prod[/COLOR] [COLOR=green] =[/COLOR]  [COLOR=red]"SELECT * FROM glw_produkte_tab "[/COLOR] [COLOR=green]; [/COLOR]
                  [COLOR=blue]$sel_prod[/COLOR] [COLOR=green].= [/COLOR] [COLOR=red]"WHERE pro_produkt_fld LIKE '"[/COLOR] [COLOR=green]. [/COLOR][COLOR=blue]$sel_produkt[/COLOR] [COLOR=green]. [/COLOR][COLOR=red]"' "[/COLOR] [COLOR=green]; [/COLOR]
                  [COLOR=blue]$sel_prod[/COLOR] [COLOR=green].= [/COLOR] [COLOR=red]"AND   pro_prodart_fld LIKE '"[/COLOR] [COLOR=green]. [/COLOR][COLOR=blue]$sel_prodart[/COLOR] [COLOR=green]. [/COLOR][COLOR=red]"' "[/COLOR][COLOR=green]; [/COLOR]
                  hat zwar (Danke für den Tip) den Sntaxfehler beseitigt, hat aber nicht an der Tatsache geändert, dass im Fehlerfreien Fall nicht alle Daten aus der Datenbanktabelle angezeigt wrden. Z.B. werden die Daten pro_produkt_fld, pro_prodart_fld und pro_prnmwst_fld nicht angezeigt, obwohl diese deffinitiev in der Tabelle vorhanden sind.
                  Zuletzt geändert von Armadi; 28.09.2004, 12:38.

                  Kommentar


                  • #10
                    Original geschrieben von Armadi
                    [...] hat aber nicht an der Tatsache geändert, dass im Fehlerfreien Fall nicht alle Daten aus der Datenbanktabelle angezeigt wrden. Z.B. werden die Daten pro_produkt_fld, pro_prodart_fld und pro_prnmwst_fld nicht angezeigt, obwohl diese deffinitiev in der Tabelle vorhanden sind.
                    gibst du diese felder denn auch mit aus?

                    und haben die datensätze an der stelle überhaupt einen inhalt in diesen spalten (prüfe nach, in dem du die erzeugte query direkt mit PMA o.ä. ausführen lässt)?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      print_r($row) in der while schleife sollte dir zeigen, welche schlüssel und werte im array wirklich vorkommen.
                      Kissolino.com

                      Kommentar


                      • #12
                        Original geschrieben von Wurzel
                        print_r($row) in der while schleife sollte dir zeigen, welche schlüssel und werte im array wirklich vorkommen.
                        gibt euch nicht soviel mühe, er wird es euch eh nicht danken.

                        und solange der Junge nicht zwischen Gross und Kleinschreibung unterscheiden kann, wird er sein Fehler eh nicht finden.



                        (kommt davon wenn man für ein Wert bis zur Ausgabe mehrere vars erstellt, siehe whileschleife.)
                        mfg
                        marc75

                        <Platz für anderes>

                        Kommentar


                        • #13
                          Herzlichen Dank Wurzel!

                          Das Problem wurde beseitigt. Es lag am Befehl 'printf()'. Aus mir unerklärlichen Gründen hatte der Befehl 'printf()' Probleme beim Anzeigen mancher Felder. Nun habe ich anstatt von printf() den Befehl echo "...."; verwendet, und es funktioniert; es werden alle Tabellenfelder angezeigt.

                          Auf jeden Fall danke für die Mühe und deine freundlichen Hinweise. Auch ehrlichen Dank an jene anderen, die Ihre Hilfe mit unfrendlichen Statments bieten.

                          Kommentar


                          • #14
                            Auch ehrlichen Dank an jene anderen, die Ihre Hilfe mit unfrendlichen Statments bieten.
                            OffTopic:
                            bitte, bitte. kein problem.
                            Die Zeit hat ihre Kinder längst gefressen

                            Kommentar


                            • #15
                              ich sehe hier kein printf, in dem ganzen Code den du gepostet hattest kommt ein printf vor, nur echo und print ???

                              PHP-Code:
                                    if (!mysql_error()) {
                                     
                              $i 0;
                                     while(
                              $row mysql_fetch_array($execMYSQL_ASSOC)) {
                                       
                              $sel_ID    =$row['pro_id_fld'] ;
                                       
                              $sel_produkt    =$row['pro_produkt_fld'];
                                       
                              $sel_prodart    =$row['pro_prodart_fld'];
                                       
                              $sel_bpreisn    =$row['pro_bpreisn_fls'];
                                       
                              $sel_prnmwst    =$row['pro_prnmwst_fld'];
                                       
                              $sel_npreisn    =$row['pro_npreisn_fld'];
                                       
                              $sel_preisalt    =$row['pro_preisalt_fld'];
                                       
                              $sel_datum    =$row['pro_datum_fld'];

                                       echo 
                              "Prod-ID      :    $sel_ID<br>";
                                       echo 
                              "Produkt      :    $sel_Produkt<br>";
                                       echo 
                              "Produktart :    $sel_Prodart<br>";
                                       echo 
                              "Brut.preis :    $sel_bpreisn<br>";
                                       echo 
                              "MwSt.      :    $sel_Prnmwst<br>";
                                       echo 
                              "Nettopreis :    $sel_npreisn<br>";
                                       echo 
                              "Preis Alt  :    $sel_Preisalt<br>";
                                       echo 
                              "Datum      :    $sel_datum<br><br>";
                                     } 
                              und bei dem Code sehe ich nur das dass echo 2, 3, 5 und 7 keine Werte von der DB ausgeben wird.

                              Bei error_reporting ALL würde der Fehler sogar angezeigt.
                              mfg
                              marc75

                              <Platz für anderes>

                              Kommentar

                              Lädt...
                              X