Textsuche über HTML Suchmaske in SQL-DB über php geht nicht !!
Hallo zusammen,
Ich habe eine HTML Suchmaske erstellt um in einer SQL DB (sie liegt lokal) nach Zahlen zu suchen und mittels PHP programmiert. Dies funktionniert einwandfrei.
Aber eine ähnliche Suchmaske die nach Text suchen soll (auch in der SQL-DB) auch über php funktionniert nicht. Was mache ich falsch ?
Welcher Cracki kann mir helfen ?
Hier kurz der HTML Code natürlich nur Auszug:
*******************
<form action="http://localhost/suche-texte.php" method="POST" style="margin-left: 13px; width: 710px;">
<table style="width: 662px; height: 76px;" border="0">
<td style="width: 112px;" align="right">Schlüsselwort</td>
<td style="width: 339px;" bgcolor="#ffcc99">
<align ="left"><input name="T2_schlüsselwort" size="20" type="text"></td>
<td style="width: 587px;"><input value="Suchen" type="submit">
</tr>
</table>
*****************************und hier das PHP File
<?php
$verbindung = @mysql_connect("localhost","root","gaga");
if (!$verbindung)
{echo "Keine Verbindung möglich!\n";
exit;
}
$Inhalt = $_POST["T2_schlüsselwort"];
$abfrage = "SELECT * from tabelle where Schlüsselwort like $Inhalt";
$erg = mysql_db_query("test",$abfrage,$verbindung);
while (list($Schlüsselwort) = mysql_fetch_row($erg)) {
echo "st das gesuchte: $Schlüsselwort<BR>\n";
}
mysql_close($verbindung);
?>
***********
Gruss Rolf
Antwort schreiben
Antwort 1 von Teerbaby vom 11.06.2020, 10:03 OptionsLösung
versuchs mal so:
SELECT * from tabelle where Schlüsselwort like '%$Inhalt%'
kann sein, dass du da noch was escapen musst. Auf jeden Fall fehlen die Hochkommas und dann wären Wildcards wie % noch hilfreich.
Antwort 2 von steindesign vom 11.06.2020, 10:19 Options
Folgendes hatte ich schon probiert, aber geht auch nicht !!
$Inhalt = $_POST["T2_schlüsselwort"];
$abfrage = "SELECT * from tabelle where Schlüsselwort like concat($Inhalt,'%')";
Gruss, Rolf
Antwort 3 von Teerbaby vom 11.06.2020, 10:42 Options
wie gesagt, der Vergleichsstring muss in Hochkommas gesetzt werden.
select * from ab where xy = 'irgendwas' (genaue Entsprechung)
select * from ab where xy like 'irgendwas%' (fängt mit ... an)
select * from ab where xy like '%irgendwas%' (enthält ...)
Antwort 4 von steindesign vom 11.06.2020, 19:14 Options
Hallo !!
Herzlichen DANK !! Nun hats geklappt.
Die Lösung ist wirklich nach dem Muster:
........Schlüsselwort like '%$Inhalt%'
Warum muss man dies nicht verketten mit . oder mit CONCAT ? Das ist mir noch ein Rätsel.
Gruss, Rolf
Antwort 5 von son_quatsch vom 12.06.2020, 09:22 Options
Zitat:
Warum muss man dies nicht verketten mit . oder mit CONCAT ? Das ist mir noch ein Rätsel.
Weil CONCAT('text1', 'text2') ergibt
'text1text2' und nicht
'text2text1text2'. Damit LIKE aber möglichst viel findet, muss auch vor dem Ausdruck dann ein % stehen und nicht
nur dahinter.