select mit where und like mit Variablen
dstein
- php
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
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
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>
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
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
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
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
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
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
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
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
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
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
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
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";