mysql abfrage mit if klappt nicht :(
hossi
- php
Hallo
ich komm einfach nicht weiter. Ich habe eine Datenbank mit einer Tabelle. Diese beinhaltet eine Spalte papierkorb. Wenn in der Spalte papierkorb "ja" steht, soll ein echo mit ja ausgegeben werden, falls nicht, ein "nein".
Das ist mein Code:
<?php
$id = $_GET["id"];
if("SELECT papierkorb FROM garant WHERE id = '".$id."'"=="ja")
{
echo ja;
}
else
{
echo nein;
}
?>
Aber irgendwie wird jedes mal "nein" ausgegeben, auch wenn der Wert "ja" sein müsste. Woran kann das liegen?
Greetz
hallo hossi,
<?php
$id = $_GET["id"];
if("SELECT papierkorb FROM garant WHERE id = '".$id."'"=="ja")
du weißt schon, wie man auf eine Datenbank zugreift?
Wäre es so einfach ohne Funktion zu machen, oh Gott.
grüße,
henman
--
"Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
sh:( fo:| ch:? rl:° br:> n4:? ie:% mo:) va:| de:] zu:) fl:{ ss:| ls:[ js:|
Hi henman,
auf eine Datenbank greife ich so zu:
$abfrage1 = "SELECT papierkorb FROM garant WHERE id = '".$id."'";
$ergebnis1 = mysql_query($abfrage1);
while($row = mysql_fetch_object($ergebnis1))
{
echo " .... $row->papierkorb .....";
}
Nur kann ich in das echo keine IF-Anweisung einbauen.
Das Problem ist noch, dass ich nicht NUR das "ja" oder "nein" ausgeben will (das würde ja so funktionieren..), sondern möchte ich auch noch die Zelle in der der Wert "ja" oder "nein" steht auch noch entsprechend grün oder rot füllen. Damit komm ich gerade nicht klar ..
Greetz
hallo hossi,
$abfrage1 = "SELECT papierkorb FROM garant WHERE id = '".$id."'";
$ergebnis1 = mysql_query($abfrage1);
while($row = mysql_fetch_object($ergebnis1))
{
echo " .... $row->papierkorb .....";
}
>
> Nur kann ich in das echo keine IF-Anweisung einbauen.
dann bau das echo in eine If-Anweisung :)
grüße,
henman
--
"Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
sh:( fo:| ch:? rl:° br:> n4:? ie:% mo:) va:| de:] zu:) fl:{ ss:| ls:[ js:|
uii :)
jetzt hab ichs ;)
<?php
$abfrage1 = "SELECT * FROM garant WHERE id = '".$id."'";
$ergebnis1 = mysql_query($abfrage1);
while($row = mysql_fetch_object($ergebnis1))
{
if($row->papierkorb=="ja")
{
echo "ja";
}
else
{
echo "nein";
}
}
?>
Danke dir :)
Dauert noch ein weilchen, bis ich damit so richtig klar komme :D
Hi!
jetzt hab ichs ;)
$abfrage1 = "SELECT * FROM garant WHERE id = '".$id."'";
Und nicht nur das, auch eine SQL-Injection-Lücke hast du. Bitte (nicht nur) an der Stelle den Kontextwechsel beachten.
Lo!
Hi!
Und nicht nur das, auch eine SQL-Injection-Lücke hast du. Bitte (nicht nur) an der Stelle den Kontextwechsel beachten.Lo!
Hi,
also sollte man die Abfrage
$abfrage1 = "SELECT * FROM garant WHERE id = '".$id."'";
in
$abfrage1 = "SELECT * FROM garant WHERE id = '" . mysql_real_escape_string($id) . "'";
ändern?
Hi!
also sollte man die Abfrage
$abfrage1 = "SELECT * FROM garant WHERE id = '".$id."'";
in
$abfrage1 = "SELECT * FROM garant WHERE id = '" . mysql_real_escape_string($id) . "'";
ändern?
Das wäre eine Möglichkeit. Ein expliziter Typecast nach Integer oder intval() wäre auch möglich (id ist doch eine Zahl, ja?). Wenn du durch diese Zwangsmaßnahme Zahlenwerte sicherstellst, kannst du auch die ''-Zeichen weglassen.
Außerdem sah ich in deinem Fall das meistens unnötige Umkopieren
$id = $_GET["id"];
Du kannst auch gleich das $_GET["id"] an mysql_real_escape_string() oder intval() verfüttern.
Lo!
Hei,
Außerdem sah ich in deinem Fall das meistens unnötige Umkopieren
$id = $_GET["id"];
Du kannst auch gleich das $_GET["id"] an mysql_real_escape_string() oder intval() verfüttern.
Aber genau das bewirkt doch die Abfrage
$abfrage1 = "SELECT * FROM garant WHERE id = '" . mysql_real_escape_string($id) . "'";
Oder habe ich das falsch verstanden?
Greetz hossi
Hallo,
Außerdem sah ich in deinem Fall das meistens unnötige Umkopieren
$id = $_GET["id"];
das ist mir auch unangenehm aufgefallen.
Du kannst auch gleich das $_GET["id"] an mysql_real_escape_string() oder intval() verfüttern.
Aber genau das bewirkt doch die Abfrage
$abfrage1 = "SELECT * FROM garant WHERE id = '" . mysql_real_escape_string($id) . "'";
Im Endeffekt ja. Trotzdem solltest du dich fragen, wofür du $_GET['id'] erst in $id umkopierst und damit eine zusätzliche Variable anlegst. Das bringt keinerlei Vorteil, verschleiert dafür aber im weiteren Script die Herkunft der Daten - der Variablen $id sieht man nicht mehr an, dass es sich indirekt um eine Benutzereingabe handelt, die mit äußerstem Misstrauen zu behandeln ist, bei $_GET['id'] ist es dagegen offensichtlich.
Oder habe ich das falsch verstanden?
Möglich ...
So long,
Martin
Hi,
Im Endeffekt ja. Trotzdem solltest du dich fragen, wofür du $_GET['id'] erst in $id umkopierst und damit eine zusätzliche Variable anlegst. Das bringt keinerlei Vorteil, verschleiert dafür aber im weiteren Script die Herkunft der Daten - der Variablen $id sieht man nicht mehr an, dass es sich indirekt um eine Benutzereingabe handelt, die mit äußerstem Misstrauen zu behandeln ist, bei $_GET['id'] ist es dagegen offensichtlich.
Da ich mich mit dem Thema php+mysql noch nicht lange beschäftige, kannte ich diese Methode eine Eingabe zu übergeben nicht, danke an Euch für diesen Hinweis.
Mein Motto: Learning by doing :D
Rom wurde schließlich auch nicht an einem Tag gebaut xD
Greetz
hossi
Hi,
if("SELECT papierkorb FROM garant WHERE id = '".$id."'"=="ja")
Aber irgendwie wird jedes mal "nein" ausgegeben, auch wenn der Wert "ja" sein müsste. Woran kann das liegen?
Daran, daß der String
"SELECT papierkorb FROM garant WHERE id = '".$id."'"
egal was in $id drinsteht, sich vom String
"ja"
unterscheidet.
Wolltest Du nicht die Datenbank befragen? Wenn ja, warum tust Du das nicht?
cu,
Andreas