dstein: select mit where und like mit Variablen

Hallo

Meine Frage ist ggf eine Anfängerfrage, aber ich finde nirgendwo eine Lösung und habe selbst auch schon einige Syntaxversuche unternommen ...

Ich habe in einer mySQL in einer Tabelle einen Datensatz mit zwei Feldern (Text); wenn ich ein SELECT * FROM $tabelle where $feld like '$suchbegriff%'"; auslöse (zuvor übergebe ich die Variablen), dann wird unabhängig vom Suchbegriff der Datensatz ausgegeben (aus PHP Script).

Führe ich den SELECT lokal in meiner mySQL Shell aus, ist alles in Ordnung.

Nehme ich nur $suchbegriff anstatt $suchbegriff%, dann treffen trotz des LIKE nut die exakten Suchbegriffe - steht im Feld also ABAB und ich suche nach AB, so erhalte ich kein Ergebnis.

Was mache ich bei der Syntax falsch?

Gruß, Dietmar

  1. Hi,

    Ich habe in einer mySQL in einer Tabelle einen Datensatz mit zwei Feldern (Text); wenn ich ein SELECT * FROM $tabelle where $feld like '$suchbegriff%'"; auslöse (zuvor übergebe ich die Variablen), dann wird unabhängig vom Suchbegriff der Datensatz ausgegeben (aus PHP Script).

    Wie sieht das fertige SQL-Statement aus?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo

      Das komplette Script sieht so aus ...

      Gruß, Dietmar

      <html>
      <head>
      <title>Daten verarbeiten</title>
      </head>
      <body>

      <?php

      $host = "localhost";
      $user = "benutzer";
      $password = "password";
      $dbname = "database";
      $tabelle ="mytable";

      $dbverbindung = mysql_connect ($host, $user, $password);

      $dbanfrage = "SELECT * from $tabelle where fahrzeug like '$suchbegriff%'";

      $result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);

      while ($ausgabe = mysql_fetch_array ($result))
       {
       print ("$ausgabe[fahrername]<br><br>$ausgabe[fahrzeug]<br><hr><br>");
       }
      mysql_close ($dbverbindung);

      ?>

      </body>
      </html>

      1. Hi,

        Das komplette Script sieht so aus ...

        Danach hatte ich nicht gefragt, sondern: Wie sieht das fertige SQL-Statement aus?

        Wenn Du Rückfragen nicht beantwortest, kann man Dir nicht weiterhelfen.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Sorry,

          dann verstehe ich die Rückfrage nicht, denn das fertige SQL Statement hatte ich doch schon geposted:

          select * from $tabelle where feld like '$suchbegriff%';

          Innerhalb des PHP Scripts funktioniert das nicht, in einer mySQL Shell schon.

          Gruß, Dietmar

          Hi,

          Das komplette Script sieht so aus ...

          Danach hatte ich nicht gefragt, sondern: Wie sieht das fertige SQL-Statement aus?

          Wenn Du Rückfragen nicht beantwortest, kann man Dir nicht weiterhelfen.

          cu,
          Andreas

          1. Hi,

            dann verstehe ich die Rückfrage nicht, denn das fertige SQL Statement hatte ich doch schon geposted:

            select * from $tabelle where feld like '$suchbegriff%';

            Nein, das ist NICHT das fertige SQL-Statement. Da sind noch PHP-Variablen drin.

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            O o ostern ...
            Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Wenn ich ein

              SELECT * FROM testabelle WHERE feld LIKE 'suchbegriff%';

              benutze, ist der Effekt der gleiche: in der mySQL Shell funktioniert es, innerhalb des PHP Scriptes erhalte ich einen Fehler.

              Daher stell(t)e ich die Frage ja auch im PHP Forum.

              Gruß, Dietmar

              Hi,

              dann verstehe ich die Rückfrage nicht, denn das fertige SQL Statement hatte ich doch schon geposted:

              select * from $tabelle where feld like '$suchbegriff%';

              Nein, das ist NICHT das fertige SQL-Statement. Da sind noch PHP-Variablen drin.

              cu,
              Andreas

              1. Hi,

                bitte zitiere sinnvoll, und nicht einfach alles.

                Wenn ich ein
                SELECT * FROM testabelle WHERE feld LIKE 'suchbegriff%';
                benutze, ist der Effekt der gleiche: in der mySQL Shell funktioniert es, innerhalb des PHP Scriptes erhalte ich einen Fehler.

                Eine PHP-Fehlermeldung hast du uns bisher noch ueberhaupt nicht genannt.

                MfG ChrisB

                --
                „This is the author's opinion, not necessarily that of Starbucks.“
                1. Hallo

                  Ich bekomme auch keine Fehlermeldung; den "Fehler" hatte ich in der Eröffnung beschrieben.

                  Benutze ich den SELECT innerhalb des PHP Scripts, so bekomme ich grundsätzlich immer ein Ergebnis, d.h. egal, ob der Suchbegriff im Feldinhalt enthalten ist oder nicht, der Feldinhalt wird ausgegeben / -gewählt.

                  Benutze ich den SELECT innerhalb der mySQL Shell, so funktioniert er wie gewünscht und ich bekomme nur dann ein Ergebnis, wenn auch der Suchbegriff im Feldinhalt existiert.

                  Es erscheint keine PHP Fehlermeldung.

                  Hi,

                  bitte zitiere sinnvoll, und nicht einfach alles.

                  Wenn ich ein
                  SELECT * FROM testabelle WHERE feld LIKE 'suchbegriff%';
                  benutze, ist der Effekt der gleiche: in der mySQL Shell funktioniert es, innerhalb des PHP Scriptes erhalte ich einen Fehler.

                  Eine PHP-Fehlermeldung hast du uns bisher noch ueberhaupt nicht genannt.

                  MfG ChrisB

                  1. Hi,

                    ich bat dich in meiner vorherigen Antwort, vernuenftig zu zitieren - also mach das bitte auch!

                    Ich bekomme auch keine Fehlermeldung; den "Fehler" hatte ich in der Eröffnung beschrieben.

                    https://forum.selfhtml.org/?t=182021&m=1204346 hast du es noch wie golft beschrieben:

                    [...] ist der Effekt der gleiche: in der mySQL Shell funktioniert es, innerhalb des PHP Scriptes erhalte ich einen Fehler.

                    Es erscheint keine PHP Fehlermeldung.

                    Schoen, wenigstens das haetten wir ja dann geklaert.

                    Die Kontrollausgabe deiner Query zeigst du uns aber immer noch nicht - also mach das jetzt bitte *endlich*.

                    MfG ChrisB

                    --
                    „This is the author's opinion, not necessarily that of Starbucks.“
                    1. Hallo Chris

                      Lange Rede, kurzer Sinn: ich habe - wie von mir schon vermutet - meinen Fehler bzgl der Syntax gefunden; zu lesen in der Antwort auf Svens Hinweis bzgl der Kontrollausgabe mit echo.

                      Gruß, Dietmar

              2. Moin!

                Wenn ich ein

                SELECT * FROM testabelle WHERE feld LIKE 'suchbegriff%';

                benutze, ist der Effekt der gleiche: in der mySQL Shell funktioniert es, innerhalb des PHP Scriptes erhalte ich einen Fehler.

                Welchen Fehler?

                Daher stell(t)e ich die Frage ja auch im PHP Forum.

                Es gibt hier nur ein einziges Forum mit der Angabe von Themengebieten. So wie es aussieht, hast du eher ein MySQL-Problem, aber das soll uns nicht dran hindern, es trotzdem zu behandeln.

                Was die Angabe des fertigen SQL-Querys angeht: Du bastelst dir im Skript eine Variable zusammen, die den Query enthält. Lass dir diese Variable unbedingt auch mit echo ausgeben und kopiere sie hier als Antwort rein.

                Außerdem wird der Inhalt (evtl. auch nur Testinhalt) deiner Datenbanktabelle benötigt. Andernfalls können wir nicht prüfen, ob die Datenbank eventuell vollkommen korrekt reagiert, weil die Daten nichts anderes zulassen.

                - Sven Rautenberg

                1. Hallo Sven

                  Welchen Fehler?

                  Fehlverhalten, ggf besser. Wie in der Eröffnung bzw auch in der Antwort für Chris beschrieben.

                  Es gibt hier nur ein einziges Forum mit der Angabe von Themengebieten. So wie es aussieht, hast du eher ein MySQL-Problem, aber das soll uns nicht dran hindern, es trotzdem zu behandeln.

                  Danke :) Ich gehe halt nur von einem Syntaxfehler meinerseits im PHP aus, da es in der Shell wie gewünscht funktioniert.

                  Was die Angabe des fertigen SQL-Querys angeht: Du bastelst dir im Skript eine Variable zusammen, die den Query enthält. Lass dir diese Variable unbedingt auch mit echo ausgeben und kopiere sie hier als Antwort rein.

                  Ok.

                  Außerdem wird der Inhalt (evtl. auch nur Testinhalt) deiner Datenbanktabelle benötigt. Andernfalls können wir nicht prüfen, ob die Datenbank eventuell vollkommen korrekt reagiert, weil die Daten nichts anderes zulassen.

                  Ok.

                  Ich werde die gewünschten Informationen hier reinkopieren - ggf nicht mehr heute Abend, aber dann morgen.

                  Danke & Gruß,

                  Dietmar

                  1. Hallo Sven

                    Ok, Asche auf mein Haupt ... mit dem echo habe ich gesehen, dass die Variable suchbegriff nicht vom HTML an das PHP Script übergeben / -nommen wird :-(

                    Der Syntaxfehler ist recht einfach:

                    Im HTML fülle ich Array[suchbegriff] per Eingabe und habe im PHP aber nur mit $suchbegriff anstatt $Array[suchbegriff] gearbeitet :-\

                    Anfängerfehler.

                    Vielen Dank auf jeden Fall für den Tip und das "an die Hand nehmen".

                    Gruß, Dietmar

                    Hallo Sven

                    Welchen Fehler?

                    Fehlverhalten, ggf besser. Wie in der Eröffnung bzw auch in der Antwort für Chris beschrieben.

                    Es gibt hier nur ein einziges Forum mit der Angabe von Themengebieten. So wie es aussieht, hast du eher ein MySQL-Problem, aber das soll uns nicht dran hindern, es trotzdem zu behandeln.

                    Danke :) Ich gehe halt nur von einem Syntaxfehler meinerseits im PHP aus, da es in der Shell wie gewünscht funktioniert.

                    Was die Angabe des fertigen SQL-Querys angeht: Du bastelst dir im Skript eine Variable zusammen, die den Query enthält. Lass dir diese Variable unbedingt auch mit echo ausgeben und kopiere sie hier als Antwort rein.

                    Ok.

                    Außerdem wird der Inhalt (evtl. auch nur Testinhalt) deiner Datenbanktabelle benötigt. Andernfalls können wir nicht prüfen, ob die Datenbank eventuell vollkommen korrekt reagiert, weil die Daten nichts anderes zulassen.

                    Ok.

                    Ich werde die gewünschten Informationen hier reinkopieren - ggf nicht mehr heute Abend, aber dann morgen.

                    Danke & Gruß,

                    Dietmar

  2. echo $begrüßung;

    Nehme ich nur $suchbegriff anstatt $suchbegriff%, dann treffen trotz des LIKE nut die exakten Suchbegriffe - steht im Feld also ABAB und ich suche nach AB, so erhalte ich kein Ergebnis.

    Genauso arbeitet LIKE. Fehlt ein Jokerzeichen, verhält es sich wie ein Vergleich mit =.

    echo "$verabschiedung $name";