Ankündigung

Einklappen
Keine Ankündigung bisher.

Script Datenabfrage funktioniert nicht

Einklappen

Neue Werbung 2019

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

  • Script Datenabfrage funktioniert nicht

    Hallo Ihr,

    ich habe viele Standortnummer in ein Array eingelesen und möchte dann in der Datenbank prüfen ob eine bestimmte Standortnummer aus dem Array in der Datenbank vorhanden ist. Code:

    Code:
    $query3 = "SELECT * FROM pro_projekttable WHERE standortnummer LIKE '%$standortspeicher[$count]%' ORDER BY standortnummer ASC";
    $result3 = mysql_query($query3);
    echo "test";
    while($row3 = mysql_fetch_array($result3)){
       echo "test2";
       $count_uebereinstimmung++;
       echo "Es wurden $count_uebereinstimmung Übereinstimmungen des Projektes mit der Standortnummer: $standortspeicher[$count] und der Netzelementnummer: $netzelementnummernspeicher[$count_netz] gefunden.";
    }
    So weit so gut...keine Fehler in der Datenbankabfrage aber er geht nicht in die While Schleife tut also so, als ob keine Ergebnisse vorliegen. Was aber definitiv der Fall ist. Wenn ich statt der Variable: $standortspeicher[$count] eine direkte Zahl beispielsweise 0000 eingebe werden auch Einträge gefunden....

    Benötige da Hilfe

    Danke

  • #2
    Debugging-Grundlagen
    0) Error-Reporting einschalten / erzwingen + Fehlerausgabe
    1) prüfe, ob deine Abfrage erfolgreich war ($result3 auf den Wert FALSE prüfen)
    2) mysql_num_rows ermitteln, dann weißt du schon mal "wieviele Datenwerte von der Datenbank gefunden wurden"
    3) sehn wir dann, wenn es soweit ist

    Kommentar


    • #3
      Huhu,

      also

      zu 0) angeschaltet mit:
      Code:
      error_reporting (E_ALL);
      ini_set ('display_errors', 'On');
      Keine Fehler

      zu 1) geprüft mittels:

      Code:
      $result3 = mysql_query($query3);
      if(!$result3) {
      //error Ausgabe
      echo "Konnte die MySQL-Abfrage nicht verarbeiten <br />n";
      echo "MySQL-Antwort:".mysql_error();
      die();
      }
      Auch das ohne FALSE Wert

      zu 2) 0 Datenwerte gefunden...was definitiv nicht sein kann wie beschrieben existieren die Standortnummern

      zu 3) was nun?

      Kommentar


      • #4
        erstmal schaust du dir die erzeugte Abfrage an - mit den eingesetzten Variablenwerten

        3)
        PHP-Code:
        echo $query3
        4) woher stammt
        $standortspeicher
        5) woher $count ?

        Kommentar


        • #5
          Kann ich Dir erklären woher das stammt
          $count zählt die gesamte Anzahl an Standortnummern (standortspeicher) die aus einer XML-Datei ausgelesen wird und zählt mittels counter dann wieviele Einträge vorhanden sind. Die Werte sind auch nicht leer...ich habe das geprüft mittels Ausgabe:

          PHP-Code:
          echo "prüfe Standortnummer: $standortspeicher[$count] <br/>"
          Die entsprechende Standortnummer wird auch korrekt ausgegeben.
          Leidglich bei der Abfrage kommt komischerweise kein Ergebnis:

          PHP-Code:
          $query3 "SELECT * FROM pro_projekttable WHERE standortnummer LIKE '%$standortspeicher[$count]%' ORDER BY standortnummer ASC";
          echo 
          mysql_num_rows($result3); 
          Bei der Ausgabe der mysql_num_rows erhalte ich wie beschrieben eine 0 als Wert, was aber definitiv nicht sein kann, da die Standortnummer in der Datenbank existiert. Tabellenname stimmt auch....

          Kommentar


          • #6
            dann lass dir doch bitte nochmal DIREKT vor der Abfrage die Variable in php ausgeben ...

            PHP-Code:
            echo $standortspeicher[$count]."<br/>";
            $query3 "SELECT * FROM pro_projekttable WHERE standortnummer LIKE '%$standortspeicher[$count]%' ORDER BY standortnummer ASC";
            echo 
            $query3."<br/>";
            $result3=mysql_query($query3) OR die(mysql_error());
            echo 
            mysql_num_rows($result3); 

            Kommentar


            • #7
              Hab ich...
              Endresultat (Ausgabe):

              PHP-Code:
              prüfe Standortnummer122991131
              SELECT 
              FROM pro_projekttable WHERE standortnummer LIKE '%122991131%' ORDER BY standortnummer ASC

              Kommentar


              • #8
                und ? das Ergebnis jetzt mal bitte in phpmyadmin testen ...

                Kommentar


                • #9
                  Inwiefern und? Habe doch die Ausgabe geschrieben die erscheint...
                  also jetzt habe ich nochmals folgendes gemacht:

                  1. manuell eine Standortnummer im Script eingetragen und suchen lassen also so:

                  PHP-Code:
                  $query3 "SELECT * FROM pro_projekttable WHERE standortnummer LIKE '%111111%' ORDER BY standortnummer ASC"
                  Ergebnis: gefunden

                  Dann wieder die Variante:
                  PHP-Code:
                  $query3 "SELECT * FROM pro_projekttable WHERE standortnummer LIKE '%$standortspeicher[$count]%' ORDER BY standortnummer ASC"
                  Obwohl die Variable genau den gleichen Inhalt hat wie das manuell eingesetzte. Kann es sein, dass die Abfrage mit einer Variablen hier genauer einem Array so nicht funktioniert?

                  Kommentar


                  • #10
                    also du hast per Ausgabe erhalten, dass die Variable eingesetzt wird. Wenn er dann keine Daten findet, gibts keinen Datensatz

                    Du solltest aber endlich mal diese PHP-Magie abstellen und den Concat-Operator verwenden, um Strings zusammenzubauen

                    wobei .. ist die Standortnummer eigentlich eine varchar-Spalte in deiner Datenbank-Tabelle ? Kann sein, dass LIKE nicht so gut arbeitet, wenn es ein Zahlentyp ist

                    Kommentar


                    • #11
                      Ja das ist eine varchar Spalte..ach da arbeitet like nicht so gut? Wie kann ich die Abfrage dann stellen?
                      Wie gesagt der Inhalt der Variable war der gleiche als wenn ich das manuell eingesetzt habe, also Datensatz definitiv in der Datenbank vorhanden!

                      Kommentar


                      • #12
                        Hmm keine Antwort mehr? Was kann ich nun tun bezügl. der varchar Spalte wie kann ich dort dann entsprechend richtig suchen lassen?

                        Kommentar


                        • #13
                          Hmm... hast Du mal die Query
                          Code:
                          SELECT * FROM pro_projekttable WHERE standortnummer LIKE '%122991131%' ORDER BY standortnummer ASC
                          direkt eingegeben? Also mal in PHPMyAdmin?

                          Und Du bist Dir 100% sicher, dass die Spalte varchar und nicht int ist?

                          Kommentar


                          • #14
                            Hab ich gemacht wenn ich die Zeile in Phpmyadmin eingebe hat der auch das Ergebnis...wenn ich dem Script keine Variable eingebe sondern direkt die Nummer suche klappt das ja auch...also..

                            Das geht:

                            PHP-Code:
                            $query3 "SELECT * FROM pro_projekttable WHERE standortnummer LIKE '%122991131%'"
                            Das geht nicht:

                            PHP-Code:
                            $query3 "SELECT * FROM pro_projekttable WHERE standortnummer LIKE '%$standortspeicher[$count]%'"
                            Die Variable $standortspeicher[$count] gebe ich mittels echo Befehl aus, dort steht auch entsprechend alles richtig drin! Also keine leere Variable oder falsche Nummer.
                            Irgendwie kommt der komischerweise nicht mit der Suche nach einem Array klar bzw. nach einer Zahl im Array....

                            Kommentar


                            • #15
                              und ja ich bin mir sicher das Standortnummer varchar ist siehe Anhang (Strukturausdruck)
                              Angehängte Dateien

                              Kommentar

                              Lädt...
                              X