Archiv verlassen und diese Seite im Standarddesign anzeigen : fehlermeldung bei falschem datentyp
jochenjjj
13-11-2003, 13:31
tag zusammen
wenn man die nummer in der Url durch einen Buchstaben ersetzt bekommt man diese Fehlermeldung.
Fehlermeldung:
Anfrage: query:'SELECT * FROM tabelle WHERE ID_tabelle=e' Unknown column 'e' in 'where clause'
Kontrolle und Aufruf der $_GET["nummer"]:
if (($_GET["nummer"] !="") && (isset($_GET["nummer"])))
{
$query="SELECT * FROM tabelle WHERE ID_tabelle=".$_GET["nummer"];
was muss ich machen das bei einer Buchstabeneingabe auch ein or die("query:'$query' ".mysql_error()); kommt.
mfg
Original geschrieben von jochenjjj
Kontrolle und Aufruf der $_GET["nummer"]:
if (($_GET["nummer"] !="") && (isset($_GET["nummer"])))
{
Dies würde ich ersteinmal einfacher undübersichtlicher gestalten mit
if (!empty($_GET["nummer"])) {
Dann stellt sich für mich die Frage ist "nummer" nun eine nummer (zahl) oder auch ein Buchstabe? Ansonsten könnte man auch gleich machen
if (is_number($_GET["nummer"])) {
Original geschrieben von jochenjjj
$query="SELECT * FROM tabelle WHERE ID_tabelle=".$_GET["nummer"];Entsprechend würde ich an Deiner Stelle immer richtig Quoten, denn was würdest Du sonst machen wenn Dir jemand Code injiziert wie z.B. "a; DROP tabelle" also
$query = sprintf("SELECT * FROM tabelle WHERE ID_tabelle=\"%s\"", addslashes($_GET["nummer"]));oder noch besser, wenn sowieso nur Nummern (Zahlen) erlaub sind, dann
$query = sprintf("SELECT * FROM tabelle WHERE ID_tabelle=\"%d\"", $_GET["nummer"]);
Wenn das ordentlich gelöst ist, sollte sich das andere Problem auch erübrigen.
cu
Pingu
jochenjjj
13-11-2003, 14:14
danke für deine tips
1.die nummer ist eine zahl also kann ich das dann genauso machen oder????
if (is_number($_GET["nummer"])) {
2.
Was bedeutet "richtig Quoten und bewirkt dieser Code genau
$query = sprintf("SELECT * FROM tabelle WHERE ID_tabelle=\"%s\"", addslashes($_GET["nummer"]));
mfg
Original geschrieben von jochenjjj
1.die nummer ist eine zahl also kann ich das dann genauso machen oder????
if (is_number($_GET["nummer"])) {
Genau mehr Info zu is_numeric() (http://php.net/is-numeric) steht in der Doku (ich sehe gerade, dass ich mich geirrt habe. Die Funktion is_number() gibt es nicht, es muß richtig heißen is_numeric() ).
Original geschrieben von jochenjjj
2.
Was bedeutet "richtig Quoten und bewirkt dieser Code genau
$query = sprintf("SELECT * FROM tabelle WHERE ID_tabelle=\"%s\"", addslashes($_GET["nummer"]));
Ich habe es jetzt auf die Schnelle nicht genau gefunden aber alle Strings müssen in mySQL in " " oder ' ' angegeben werden. Sonst denkt er es ist Spaltennamen gemeint (wenn es keines der reservierten Wörter) ist.
Ansonsten empfehle ich die Doku zu sprintf() (http://php.net/sprintf) und addslashes() (http://php.net/addslashes). Ich denke, da es dort sehr gut beschrieben ist, brauche ich es hier nicht nocheinmal wieder zu geben.
Pingu
jochenjjj
13-11-2003, 16:04
alles klar
habe alles genauso gemachr wie du gesagt hast jetzt bekomme ich nur folgendes problem.bin schon seit 2 stunden dran bekomme es aber nicht gelöst
Problemstellung:
Ich bekomme per get einen Parameter FK_muster.
FK_muster existiert in der mysql tabelle als datentyp int und zahlenmäßig von 1 bis 10.
code:
if(($_GET["FK_muster"] !="") && (isset($_GET["FK_muster"])))
$query = sprintf("SELECT * FROM tabelle WHERE ID_ta=\"%d\"", $_GET["FK_muster"]);
$result=mysql_query($query) or die("query:'$query' ".mysql_error());
$row_tabelle=mysql_fetch_array($result);
$wert10=$row_tabelle['name'];
Mein Problem:
wenn ich jetzt in der url einen buchstabe oder eine andere zahl (die nicht in der datenbanktabelle steht)für FK_muster eintrage bekomme ich eine syntax fehlermeldung.
Die Variable $wert10 benutzt ich folgender weise weiter:
code:
$query = sprintf("SELECT * FROM ".$wert10." WHERE ID_bl=\"%d\"", $_GET["ID_bl"]);
könnt ihr mir helfen den fehler zu finden?
mfg
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.