ubuntuusers.de

MySQL-Abfrage mittels HTML-Form und PHP-Ausgabe

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Janiek2000

Anmeldungsdatum:
11. März 2008

Beiträge: Zähle...

Wohnort: Kaarst

Hallo liebe Leute,

ich probiere mal wieder etwas - für mich - neues aus. Ich möchte gerne über ein HTML-Dokument ein Formular ausfüllen, welches beim Auslösen mittels Button ein PHP-Dokument aufruft und mittels einer MySQL-Abfrage entsprechende Datensätze ausgibt. Im Grunde genommen klappt das auch, aber nur dann, wenn ich die Abfragewert "hart" in den SELECT-String hinterlege. Tue ich das nicht, sondern nutze Variablen, die im HTML-Dokument gefüllt werden sollen, kommt eine Fehlermeldung mit folgenden Inhalt.

Fehlermeldung=You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE 'Suchanfrage'' at line 1

Scheinbar gibt es ein Problem in MySQL, aber kann es nicht lösen.

MySQL nutze ich wie folgt: Server - MySQL 5.1.37-1ubuntu5.1-log Client - MySQL Client Version 5.0.83

Die Code-Beispiele sind nicht von mir, ich benutze sie nur, um zu verstehen wie das Gesamtwerk funktioniert. Insgesamt klappt es ohne Variablen, aber mit Variablen eben nicht. Scheinbar sind die Variablen nicht gefüllt, aber ich bin mal wieder zu dusselig selbst dieses herauszufinden. Die Variablen-Werte habe ich vorbelegt.

Info: Der Benutzer und das Paßwort sind netraul geändert. In meinem eigenen Script lagere ich die Connect-Infos aus.

Hier der HTML-Code (abfrage.html):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<html>
<head><title>Beispieldatenbank Buch</title></head>
<body>
<h3>Datenbankabfrage</h3>
<hr>
<form action="abfrage.php" method="post">
<br>
Attribut:    <input type="text" name="Attribut" size="20" maxlength="20" value="Autor"><br>
<br>
Suchanfrage: <input type="text" name="Suchanfrage" size="20" maxlength="20" value="Simmel">br>
<br>
<input type="submit" value="Abfrage">
<input type="reset"  value="Zurücksetzen">
</form>
<hr>
<a href="start.html">Startseite</a><br>
</body></html>

Hier der PHP-Code (abfrage.php):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Beispieldatenbank Buch</title>
</head>
<body>
<h3>Suchergebnis</h3>
<hr>
<?php
 $link=mysql_connect("localhost","user","password"); mysql_select_db("test");
 $anfrage="SELECT * FROM buch WHERE $Attribut LIKE 'Suchanfrage';";
 $ergebnis=mysql_query($anfrage) or die ("Fehlermeldung=".mysql_error());
 echo mysql_num_rows($ergebnis)." Datensätze<p> ";
 echo "<table border='1' width='70%' cellspacing='0' cellpadding='0'>";
 for ($i=0;$i<mysql_num_fields($ergebnis);$i++) {echo "<th>".mysql_field_name($ergebnis,$i)."</th>"; };
 while ($zeile=mysql_fetch_row($ergebnis))
   { echo "<tr>";
    for ($i=0;$i<mysql_num_fields($ergebnis);$i++) {echo "<td>".$zeile[$i]."</td>";};
    echo "</tr>"; };
  echo "</table>";
 mysql_free_result($ergebnis); mysql_close($link);
?>
<hr>
<a href="abfrage.html">Abfrage</a><br>
<a href="start.html"  >Startseite</a><br>
</body>
</html>

Puh, ich hoffe, ich habe alle Angaben gemacht, um ggfs. einen Tipp zu bekommen, warum die Fehlermeldung angezeigt wird, wenn die Suchanfrage mittels Variablen durchgeführt werden soll. Danke im voraus!

Schönen Gruß

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Hallo,

die Fehlermeldung bekommst du, weil die Variable $Attribut nicht definiert ist. Das wiederum dürfte daran liegen, dass register_globals deaktiviert ist, was auch völlig richtig ist. Wo hast du dieses Beispiel denn ausgegraben?

Gruß

toddy Team-Icon

Ikhayateam
Avatar von toddy

Anmeldungsdatum:
31. Juli 2007

Beiträge: 9521

Wohnort: Lüneburg

Hallo,

es würde gehen, wenn Du die Variablen definierst, also im Empfang nimmst:

$attribut = $_POST['Attribut'];
$suchanfrage = $_POST['Suchanfrage'];

Danach kannst Du dann weiter in Deinem Skript gehen und mit den Variablen arbeiten.

Liebe Grüße,
Torsten

Janiek2000

(Themenstarter)

Anmeldungsdatum:
11. März 2008

Beiträge: 12

Wohnort: Kaarst

toddy schrieb:

Hallo,

es würde gehen, wenn Du die Variablen definierst, also im Empfang nimmst:

$attribut = $_POST['Attribut'];
$suchanfrage = $_POST['Suchanfrage'];

Danach kannst Du dann weiter in Deinem Skript gehen und mit den Variablen arbeiten.

Hallo Toddy, auch auf die Gefahr hin, dass mich der Blitz trifft: An welcher Stelle wird die Variablendeklaration denn vorgenommen? Alles, was ich bislang versucht habe, ging schief. Deine beiden Programmzeilen habe ich gestern schon gefunden und eingebaut gehabt, aber es hat nicht geklappert.

Vielen Dank für Deine schnelle Antwort.

Schönen Gruß

Janiek2000

(Themenstarter)

Anmeldungsdatum:
11. März 2008

Beiträge: 12

Wohnort: Kaarst

Hallo an die beiden Antworter,

ich habe es nun endlich auf die Reihe bekommen. Vielen Dank für den Hinweis Toddy.

@xabbuh: Nunja, das Beispiel ist aus einem zuzugebenermaßen etwas älterem Buch. Aber schon aus diesem Jahrtausend!

Endlich kann es weitergehen!

Schönen Gruß Janiek

toddy Team-Icon

Ikhayateam
Avatar von toddy

Anmeldungsdatum:
31. Juli 2007

Beiträge: 9521

Wohnort: Lüneburg

Hi,

<?php
//hier würde ich es einbauen.
 $link=mysql_connect("localhost","user","password"); mysql_select_db("test");

Siehe oben. Also auf jeden Fall bevor Du die Variablen benutzt. Achte auf Groß- und Kleinschreibung! Das ist manchmal auch ganz wichtig. ☺

Liebe Grüße,
Torsten

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Sollte ich das Stichwort SQL-Injection noch einwerfen? Ich glaube ja ☺

Antworten |