Homepage selbermachen 7.852 Themen, 35.619 Beiträge

Mit PHP in MySQL DB suchen

mastersigmund1 / 3 Antworten / Baumansicht Nickles

NAbend,
ich habe ein Problem :)
Und zwar hab ich ein kleines Script, was eine Tabelle mit div. Sachen füttert. Das einfügen klappt wunderbar.
Jetzt möchte ich in der DB suchen, und zwar so, dass nach Text in Spalte A gesucht wird, aber der Inhalt von Spalte B der gleichen ID ausgegeben wird.
Habe schon vieles probiert von "SELECT Spalte B FROM Tabelle WHERE Spalte A LIKE Suchwort" über dieses MATCH, aber nichts klappt.

Wer kann den entscheidenden Tip geben?

Ich würd schon denken, dass meins, was ich jetzt habe, laufen würde, aber er scheint wohl an der Ausgabe von Spalte B zu hängen.

Das habe ich bisher:


error_reporting(E_ALL); // alle Fehler anzeigen
include('dbconnect.php');
$Frage = $_POST['Frage'];
$query = "SELECT Antwort FROM fragen WHERE Frage LIKE '$Frage'";
$result = mysql_query($query);
echo $Frage;
echo $result;
?>

Es kommt auch kein Fehler oder so.
Hab auch schon gegooglet wie ein verrückter, aber die Ergebnisse haben nicht wirklich geholfen

bei Antwort benachrichtigen
wlaner mastersigmund1 „Mit PHP in MySQL DB suchen“
Optionen

Hi
mysql_query alleine reicht nicht, der Inhalt eines Datensatzes wird damit noch nicht "angefordert".
So sollte es klappen:

$Res = mysql_fetch_array(mysql_query($query));
echo $Res['Antwort'];


Damit werden alle selectierten Felder (hier nur Antwort) im Array $Res abgelegt.
Die Ausgabe erfolgt dann über $Array['spalte'] (hier $Res['Antwort'])

WL

PS:
Näheres hier: http://dev.mysql.com/doc/refman/5.1/de/index.html

PPS:
Hab grad entdeckt, dass du die $_POST-Variable einfach so in den Query einbaust. Das ist eine rießige Sicherheitslücke! Stichwort mysql_injections:
http://de.wikipedia.org/wiki/SQL-Injektion
und http://www.heise.de/security/artikel/43175/

Lösung: $Var = mysql_real_escape_string($_POST['var']);

bei Antwort benachrichtigen
mastersigmund1 wlaner „Hi mysql_query alleine reicht nicht, der Inhalt eines Datensatzes wird damit...“
Optionen

Jau, funktioniert, danke :D

bei Antwort benachrichtigen
xafford mastersigmund1 „Jau, funktioniert, danke :D“
Optionen

Noch ein kleiner und wohlgemeinter Hinweis am Rande, folgendes ist ziemlich gefährlich aus Sicherheitsaspekten:

$Frage = $_POST['Frage'];
$query = "SELECT Antwort FROM fragen WHERE Frage LIKE '$Frage'";

Denn Du übernimmst direkt Eingaben aus unsicherer Quelle (vom Client) und übergibst sie an die Datenbank zur Ausführung. So lange übergebene Parameter von PHP escaped werden mit magic_quotes_gpc werden Angriffe zwar in diesem Fall verhindert, aber spätestens wenn aus irgend einem Grund einmal magic_quotes_gpc nicht aktiviert ist (in PHP6 standardmässig vorgesehen) reisst das eine riesen Lücke.

Also gleich von Anfang an dran gewähnen:

$Frage = mysql_escape_string($_POST['Frage'];

oder noch besser, mysql_real_escape_string() nutzen. Das sollte man sich gleich von Anfang angewöhnen!

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen