SQL Befehl SELECT und POST Variable

Alles, was PHP betrifft, kann hier besprochen werden.

SQL Befehl SELECT und POST Variable

Postby sunnymay » 21. January 2007 00:44

Der normale Aufruf beim Select Befehl ist ja soweit ich weiß folgender:

SELECT * FROM tabellenname WHERE Spaltenname LIKE 'Zeichenkette';

also in meinem Fall:

SELECT * FROM buch WHERE VerlagsNr LIKE '35';

Ich habe folgendendes HTML-Dokument erstellt:

<FORM action = 'loeschen.php' method = 'post'>
<PRE>
Attribut: <SELECT name = 'Attribut' size = '1'>
<OPTION value = 'ISBN'>ISBN
<OPTION value = 'Autor'>Autor
<OPTION value = 'Titel'>Titel
<OPTION value = 'VerlagsNr'>VerlagsNr
</SELECT><BR>
Suchanfrage: <INPUT type = 'text' name = 'Suchanfrage' size = '10' maxlength = '20' value = '%'>
<INPUT type = 'submit' value = 'Abfrage'

Ich bekomme allerdings für den folgenden SELECT Befehl innerhalb von loeschen.php immer eine Fehlermeldung:

$anfrage = "SELECT * FROM buch WHERE $_POST[Attribut] LIKE '$_POST[Suchanfrage]';";
$ergebnis = mysql_query($anfrage) or die ("Fehlermeldung:<BR>".mysql_error());

Leider kann ich mit der Meldung nichts anfangen:

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 ''' at line 1

Kann mir vielleicht einer von euch sagen, was das bedeuten soll?

Gruß, sunnymay :-)
sunnymay
 
Posts: 9
Joined: 14. January 2007 14:53

Postby martinpre » 21. January 2007 01:49

Also erstens HTML Attribute gehören in solche anFührungszeichen: "

Zweitens sollte man wenn man genau einen bestimmten Datensatz sucht nicht like sondern einfach = verwenden.

Drittens: Das ; in der Mysqlabfrage ist unnötig

Also die Richtige abfrage würde so heißen:

Code: Select all
$anfrage = 'SELECT * FROM buch WHERE '.$_POST['Attribut'].'=\''.$_POST['Suchanfrage'].'\'';
martinpre
 
Posts: 405
Joined: 22. May 2006 16:14
Location: Nähe Tulln / Österreich

Postby deepsurfer » 21. January 2007 01:55

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 ''' at line 1

Die Fehlermeldung besagt nur das die Funktion "LIKE" in der von dir benutzen form nicht stimmt und das du bitte die MySQl Manuel nachschaust um es richtig zu machen.

Ausgehend von einem MySQL 5.x Version
http://dev.mysql.com/doc/refman/5.1/de/ ... tions.html
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby sari42 » 21. January 2007 03:03

martinpre wrote:Zweitens sollte man wenn man genau einen bestimmten Datensatz sucht nicht like sondern einfach = verwenden.
LIKE ist schon ok, schließlich soll u.a. nach "Autor" gesucht werden. Das eigentliche Problem scheint mir
Code: Select all
near 'LIKE ''' at line 1
zu sein. Offenbar ist $_POST[Suchanfrage] leer. Das sollte vorher abgefangen werden!
sari42
 
Posts: 800
Joined: 27. November 2005 18:28

Postby sunnymay » 21. January 2007 16:55

Hallo, danke nochmale für eure Tipps. Ich habe den Fehler jetzt selbst gefunden... Newbie-Problem denke ich mal... ich habe innerhalb von loeschen.php versucht <FORM action = 'loeschen.php' method = 'post'> aufzurufen, das hat dann den Fehler verursacht...

Habe also Dateinamen geändert und schon funktioniert es.

Dazu muss ich sagen, dass ich den kompletten Code aus Unterlagen von unserem Berufsschullehrer (Anwendungsentwicklung) abgeschrieben habe und da funktioniert rein gar nichts... deshalb verzweifle ich gerade ein wenig bei dem Versuch den Code anzupassen...

Gruß, sunnymay
sunnymay
 
Posts: 9
Joined: 14. January 2007 14:53


Return to PHP

Who is online

Users browsing this forum: No registered users and 15 guests