Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehlerhafte Ergebnisse bei MYSQL Abfrage

Einklappen

Neue Werbung 2019

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

  • Fehlerhafte Ergebnisse bei MYSQL Abfrage

    Hallo zusammen,

    ich stehe hier vor einem kleinen Rätsel. Ich möchte ganz klassisch über einen Suchparameter entsprechende Ergebniss Daten aus einer DB auslesen. Ganz kurz wie das aufgebaut ist:

    Eingabeformular für Suchparameter:
    PHP-Code:
    <form action="vorlagen.php" method="get" name="Produkte" id="Produkte">
            <
    input type="hidden" name="case" value="choose">
            <
    table width="100%" border="0" cellspacing="0" cellpadding="0">
              <
    tr
                <
    td colspan="3" class="standard">&nbsp;</td>
              </
    tr>
              <
    tr
                <
    td width="36%" class="standard"><div align="right"><strong>Artikelname</strong></div></td>
                <
    td width="28%"><div align="center"
                    <
    input type="text" name="bezeichnung" value="" size="35" >
                  </
    div></td>
                <
    td width="36%"><input type="submit" name="Submit" value="Abschicken"
                </
    td>
              </
    tr>
              <
    tr
                <
    td colspan="3">&nbsp; </td>
              </
    tr>
            </
    table>
          </
    form
    MYSQL Syntax mit PHP:
    PHP-Code:
        $bezeichnung $_GET['bezeichnung'];
        
    $produkt_holen "select p.id, p.bezeichnung, p.menge, p.reduziert, m.name as name from produkte p, marke m where p.bezeichnung Like '%$bezeichnung%' and m.id = p.marke order by m.name asc, p.bezeichnung asc";
        
    $do_produkt mysql_query($produkt_holen) or die(mysql_error());
        
    $row_produkt mysql_fetch_array($do_produkt); 
    So jetzt das merkwürdige: Es kommt häufig vor, dass ich auf diese Anfrage keine Ergebnisse angezeigt bekomme. Wenn ich allerdings die exakt gleiche Syntax direkt als SQL Abfrage in PHPMyAdmin eingebe, bekomme ich das korrekte Ergebnis angezeigt. Woran kann das liegen? Welche zusätzlichen Infos benötigt Ihr noch?

    Vielen Dank für Eure Hinweise.

  • #2
    Es kommt häufig vor
    Wann genau?

    Kommentar


    • #3
      So ein richtiges Muster erkenne ich nicht. Es sollen Produktname aus der DB ausgelesen werden. Z. B. gibt es ein Produkt das "Double Lift Serum" heißt. Wenn ich nach "Double" suche wird mir als Ergebnis nichts angezeigt, bei Abfrage direkt in phpMyAdmin aber schon. Suche ich nach "Lift", bekomme ich das korrekt angezeigt.

      Kommentar


      • #4
        Habe noch einen Fall gefunden, der etwas komisch ist:

        Es gibt zwei Produkte, die mit "Reservatrol" anfangen.

        Suche ich nach "RES" werden beide Produkte angezeigt. Suche ich nach "RESE" wird nur noch eins angezeigt.

        Wie gesagt, bei Eingabe im phpMyAdmin wird alles korrekt angezeigt

        Kommentar


        • #5
          Naja das kann ja schlecht sein. Entweder führst du das Query nicht so aus oder rufst die Daten eben falsch ab. Eine while()-Schleife solltest du allerdings noch einbauen, wenn mehrere Ergebnisse kommen.

          Solange du aber nichts reproduzierbares lieferst, wirds schwierig mit der Hilfe.

          Kommentar


          • #6
            Hm, also ich möchte behaupten, dass ich verstehe, was ich tue. Abfragen generieren usw. ist also nicht das Problem. Wie gesagt, wenn ich den SELECT string mit copy/paste ins phpMyAdmin kopiere, dann funktioniert das. Es muss also irgend etwas mit dem Zugriff auf die DB zu tun haben, aber da kann man ja eigentlich auch nicht wirklich was falsch machen.

            Sehr komisch ist eben der Fall den ich als letztes geschildert habe. Je nadem wieviel Buchstaben eingegeben werden, kommt ein anderes Ergebnis raus.

            Ich weiß nicht, wie dieses Phänomen zustande kommt...


            Gut ich habe mein Skript komplett entschlackt und nur das nötigste drin gelassen:

            PHP-Code:
            <?php

              $db_server 
            "xxx";
              
            $db_name "xxx";
              
            $db_user "xxx";
              
            $db_passwort "xxx";
                     
              
            $db = @MYSQL_CONNECT($db_server,$db_user,$db_passwort) or die ("Konnte keine Verbindung zur Datenbank herstellen");
              
            $db_check = @MYSQL_SELECT_DB($db_name);

              
            $produkt_holen "select p.id, p.bezeichnung, p.menge, p.reduziert, m.name as name from produkte p, marke m where p.bezeichnung Like '%reservatrol%' and m.id = p.marke order by m.name asc, p.bezeichnung asc";
              
            $do_produkt mysql_query($produkt_holen) or die(mysql_error());
              
            $row_produkt mysql_fetch_array($do_produkt);
             
              while (
            $produkte mysql_fetch_array($do_produkt)) {
              <
            tr
                <
            td><a href="vorlagen.php?id=<? echo $produkte['id'] ?>&case=details" target="_self"><? echo $produkte['name'?> 
                  - <? echo $produkte['bezeichnung'] ?> - <? echo $produkte['menge'] ?> <? echo $produkte['reduziert'] ?></a></td>
              </tr>
              <tr> 
                <td colspan="3"><img src="http://www.php.de/images/pixel_silver.gif" width="100%" height="1"></td>
              </tr>
              }

              mysql_close($db); ?>
            Trotzdem das gleiche Phänomen, unterschiedliche Ergebnisse zwischen Skript und phpMyadmin. Wobei die Ergebnisse vom Skript falsch sind. Hat das eventuell was mit GET und POST zu tun?

            Kommentar


            • #7
              Stimmen die Indexe auf den durchsuchten Spalten? Nutze mal ein anständiges JOIN (left/right) und lass dir mal die mysql warnungen anzeigen.

              Wenn gleiche Abfragen in phpmyadmin und deinem Script unterschiedliche Ergebnisse liefern, dann wird vermutlich an der Verbindung was hapern. Stimmen encoding und andere Verbindungseinstellungen?

              Zur Not nimm dir ein network sniffing tool und schau ob du auch die richtigen pakete vom mysql server bekommst. Was sagt das SQL Logbuch?

              Kommentar


              • #8
                Entfern diese Zeile: $row_produkt = mysql_fetch_array($do_produkt);

                Ansonsten verlierst du das erste Ergebnis.

                Kommentar


                • #9
                  Da war sie wieder die Geschichte mit dem Wald und den Bäumen. Mir war gar nicht mehr so richtig bewußt, dass diese Zeile da drin steht. Danke...

                  Kommentar

                  Lädt...
                  X