Supportnet / Forum / Skripte(PHP,ASP,Perl...)
datenbankabfrage SQL Like mit php
Frage
Hallo Leute,
Ich möchte eigentlich nur ne simple Abfrage aus meiner Datenbank per php.
Dazu soll der Suchbegriff in ein Formularfeld in datei1.php eingegeben werden und dann in datei2.php angezeigt werden.
Bei mir wird aber nix ausgegeben, wenn ich es wie unten beschrieben (bestimmt falsch) mache.
Es wird aber die ((such)-Variable $titelinh übermittelt,denn ich kann sie in Datei2.php unten mit echo ausgeben.
Ändere ich die Datenbankabfrage in datei2.php wie unten (auskommentiert) in eine Abfrage über mehrere Spalten und Zeilen der Tabelle geht alles hervorragend, nur wird eben leider alles ausgegeben, was mir aber sagt, dass immerhin die Datenbankverbindung stimmt.
Was mache ich also falsch?
Die entscheidenden Teile der Dateien sehen so aus:
in datei1.php:
[code] <form action="datei2.php:" method="post">
Filter: <input type="text" size="17" name="titelinh">
<br><br>
<center>
<input type="submit" value="Datensatz abfragen">
</center>
</form>
[/code]
in datei2.php:
[code]<?
mysql_connect("localhost",
"ottonormalo","12345");
mysql_select_db("spamterminal");
$titelinh= $_POST["titelinh"];
$abfrage = "SELECT * FROM spam WHERE filter Like ´$titelinh´";
//$abfrage = "SELECT filter,datum,action FROM spam";
//die letzte auskommentierte Zeile geht (wenn man die ..Select from... Zeile weglässt)
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo "Filter: ";
echo $row->filter,"<br><br>";
echo "Datum: ";
echo $row->datum,"<br><br>";
echo "Action: ";
echo $row->action,"<br><br><br>";
}
echo $titelinh;
//die Variable $titelinh wird hier auch ausgegeben!!! sie kommt also zumindest hier an.
?>
[/code]
Vielen Dank für Eure Hilfe!
Tom
Antwort 1 von Supermax
Wenn du nach einer Teilzeichenkette suchen willst, muß die Anweisung
lauten. Das % ist ein SQL ein Platzhalter, der für beliebig viele Zeichen stehen kann.
Mit
... WHERE filter LIKE ´%$titelinh%´
lauten. Das % ist ein SQL ein Platzhalter, der für beliebig viele Zeichen stehen kann.
Mit
LIKE ´$titelinh%´
kannst du z.B. nach Zeichenketten suchen, die mit "$titelinh" beginnen.Antwort 2 von gutefrage
Danke Supermax,
Der Hinweis mit der Teilzeichenkette war echt gut.
Ich weiss nicht wie ,aber das "% " hab ich wohl in allen meinen Tutorials überlesen (ja, es stand drin!)
Inzwischen funzt es auch.
Vielen Dank und Frohe Weihnachten.
greetz
tom
Der Hinweis mit der Teilzeichenkette war echt gut.
Ich weiss nicht wie ,aber das "% " hab ich wohl in allen meinen Tutorials überlesen (ja, es stand drin!)
Inzwischen funzt es auch.
Vielen Dank und Frohe Weihnachten.
greetz
tom