Ankündigung

Einklappen
Keine Ankündigung bisher.

Select mit Variable, die Leerstellen beinhaltet

Einklappen

Neue Werbung 2019

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

  • Select mit Variable, die Leerstellen beinhaltet

    Hallo PHP-Gemeinde

    Zwar habe ich schon aufgegeben und nach anderen Wegen gesucht, interessehalber stelle ich aber doch mein Problem ins Forum:

    Ich lese aus einer Kundentabelle per PHP die Auftragsnummer – speichere diese in eine Variable – und suche mit dieser Variablen dann den Datensatz in der Lagertabelle. Mein Problem besteht darin, dass die Auftragsnummer Leerstellen beinhaltet. Also in dieser Art: B 6 323 8 75. Sie wird händisch eingegeben. Datentyp in der MYSQL-Tabelle ist char(15)

    Wenn ich damit versuche den Datensatz aus der Lagertabelle auszulesen, wo die Artikelnummer genauso drin steht, bekomme ich weder eine Fehlermeldung noch ein Ergebnis. Wenn ich die Leerstellen bei beiden Artikelnummern (Kundentabelle und Lagertabelle) entferne, funktioniert es ohne Probleme. Das Entfernen der Leerstellen ist allerdings umständlich.

    Mein Aufruf sieht so aus:

    Code:
    echo $Artikel; (ergibt: B 6 323 8 75)
    $sql = "SELECT id,Artikel,Farbe,Menge From lager
    Where Artikel = '".$Artikel."' "; foreach ($conn->query($sql) as $row)
    {echo $row['Artikel'];}
    Diese Anfrage wird jeweils ignoriert und auch nicht durch eine Fehlermeldung:
    (error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE)) beantwortet.

    Gibt es eine Möglichkeit, das Leerstellenproblem auf einfachere Art zu lösen?




  • #2
    Fehlerhaftes Datenbankdesign. Entweder du arbeitest mit datenbankinternen IDs oder mit richtigen Artikelnummern und nicht irgendwelche komisch formatierten Texte.

    Kommentar


    • #3
      Alles klar. Soll ich das so meinem Kunden sagen, der die komisch formatierten Artikelnummern vorgibt ?

      Kommentar


      • #4
        Zitat von Schwarz Beitrag anzeigen
        Alles klar. Soll ich das so meinem Kunden sagen, der die komisch formatierten Artikelnummern vorgibt ?
        Nein, demjenigen, der die Datenbankstruktur entworfen hat.

        Kommentar


        • #5
          Na gut, jetzt bin ich sehr viel klüger geworden. Weiß sonst noch jemand Bescheid, warum eine Variable mit Leerstellen beim Select nicht funktioniert und auch keine Fehlermeldung ausgibt?

          Kommentar


          • #6
            Beschäftige Dich mit Quoting. Als Dank dafür kannst Du dann Dein Problem lösen.
            PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

            Kommentar


            • #7
              Zitat von Schwarz Beitrag anzeigen
              Na gut, jetzt bin ich sehr viel klüger geworden. Weiß sonst noch jemand Bescheid, warum eine Variable mit Leerstellen beim Select nicht funktioniert und auch keine Fehlermeldung ausgibt?
              Behebe dir Ursache und doktor nicht an Symptomen herum. Der Fehler liegt schon im Datenbankdesign und nicht in der Abfrage.

              Kommentar


              • #8
                Vom Grundsatz machen Leerzeichen keine Probleme, müssen selbstredend an der richtigen Stelle stehen. echo ist jedoch nicht zum Debuggen geeignet. Du erkennst weder mehrere Leerzeichen noch Steuerzeichen.
                Nimm var_dump und achte auf die Stringlänge.

                Kommentar


                • #9
                  jspit

                  Danke für die Anregung. Also var_dump gibt mir aus: string(12) "A 1 525 5 60"
                  Aber wieweit ist diese Information hilfreich?

                  Kommentar


                  • #10
                    Was gibt var_dump($sql) aus?
                    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                    Kommentar


                    • #11
                      tkausl

                      var_dump($sql)

                      string(135) "SELECT id,Regal,Artikel,Farbe,Menge,Gr0,Gr1,Gr2,Gr3,Gr4,G r5,Gr6,Gr7,Gr8,Gr9,Gr10,Gr11,Gr12 From lager Where Artikel = 'B 6 323 8 75' "

                      Kommentar


                      • #12
                        Vermute nach dem Ergebnis jetzt mal das die Einträge in der Datenbank anders sind, irgendwo ein Leerzeichen/Steuerzeichen zuviel oder am Ende.
                        Mal folgendes probieren:
                        PHP-Code:
                        $Artikel 'B%';
                        $sql "SELECT * FROM lager WHERE Artikel LIKE '".$Artikel."' "
                        Wenn Datensätze selektiert werden, die Artikelnummer Schritt für Schritt ergänzen oder/und die Artikel auch mit var_dump ausgeben.

                        Zur Frage "Aber wieweit ist diese Information hilfreich?"
                        Hier ist zu erkennen, das wie keine zusätzlichen Zeichen im String sind, denn dann wäre die Anzahl nicht 12.

                        Edit: Wenn im Datenbankfeld Artikel "nur" irgendwo zuviele Leezeichen sind, kannst du folgendes probieren:
                        PHP-Code:
                        $Artikel str_replace(" ",""$Artikel);
                        $sql "SELECT * FROM lager WHERE REPLACE(`Artikel`, ' ', '')= '".$Artikel."' "

                        Kommentar


                        • #13
                          Datentyp in der MYSQL-Tabelle ist char(15)
                          Ändere das mal auf varchar und teste erneut.

                          Kommentar


                          • #14
                            Hab ich auch mit char(15) probiert, spielt bei mir keine Rolle.

                            Kommentar


                            • #15
                              Bei ihm kann aber der SQL-Mode anders eingestellt sein. Siehe https://dev.mysql.com/doc/refman/5.6...to_full_length

                              Kommentar

                              Lädt...
                              X