Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Homepagehilfe - Archiv (https://www.gegen-bilderklau.net/board.php?boardid=139)
----- Query ist fundlos trotz vorhandener Daten (https://www.gegen-bilderklau.net/thread.php?threadid=184644)


Geschrieben von WuLana am 24.07.2012 um 08:33:

  Query ist fundlos trotz vorhandener Daten

Huhu
als erstes einmal der Code
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
$user=$_POST['username'];
    $pw=$_POST['password'];
    mysql_connect("-","-","-") || die($error_dbConnect);
    mysql_select_db("-") ||die($error_dbSelect);
    $sql=mysql_query("SELECT * FROM user WHERE username='$user' OR nicename='$user'") ||die($error_dbQuery);
    //@$data=mysql_num_rows($sql);
    $data=mysql_fetch_object($sql);
    echo($data->id."#".$data->username."#".$data->nicename);
    mysql_close();


es geht hier um nen teil eines LogIn Skripts
Das Problem: Die Query findet nichts obwohl Daten vorhanden sind, er richtig connected, es die richtigen Tabellen Namen sind und er wirft nicht mal ne Fehlermeldung.

Bereits getestet:
Inhalt von $user und $pw,
connect und select_db richtig connecten
ob ein Fehler vorfällt -> nein sonst käme die Fehlermeldung die in einer config definiert ist
ob Fehler bei num_rows oder fetch_object auftreten

Vielleicht findet vom euch jemand etwas
lG Oldy



Geschrieben von Oli am 24.07.2012 um 18:20:

 

Hi,

das liegt am Unterschied zwischen || und or.

php:
1:
$a=|| die('fehler');


Zuerst wird 5||die('fehler') bearbeitet, das Ergebnis wird dann in $a gespeichert. Da || eine logische ODER-Verknüpfung ist, ist das Ergebnis vom Datentyp bool (also nur true oder false).

Das die() wird übrigens niemals aufgerufen, weil die 5 bereits "true" ist und das Ergebnis damit schon feststeht.


php:
1:
$a=or die('fehler');


Zuerst wird $a=5 ausgeführt. Wenn dabei false rauskommt, wird die('fehler') ausgeführt.



Der Ablauf also in deinem Fall:
php:
1:
2:
3:
$sql=mysql_query("SELECT * FROM user WHERE username='$user' OR nicename='$user'") ||die($error_dbQuery); //1.
$sql RESSOURCE || die($error_dbQuery); //2.
$sql true//3.


Das Gegenbeispiel:
php:
1:
2:
3:
$sql=mysql_query("SELECT * FROM user WHERE username='$user' OR nicename='$user'")  or die($error_dbQuery); //1.
$sql RESSOURCE or die($error_dbQuery); //2.
$sql RESSOURCE//3.



LG



Geschrieben von WuLana am 25.07.2012 um 21:52:

 

also einfach in ein or verwandeln und sonst nix? o.o dachte "OR" ==" ||" aber man lernt nie aus
danke dir werds gleich versuchen fröhlich

ps: in der schule wurd uns eindeutig was falsches erzählt



Geschrieben von Oli am 26.07.2012 um 18:09:

 

Hi,

Zitat:
Original von oldgirl
also einfach in ein or verwandeln und sonst nix? o.o

Das ist eine von vielen Möglichkeiten.

Zitat:
Original von oldgirl
dachte "OR" ==" ||" aber man lernt nie aus

Es ist gewissermaßen schon das gleiche, allerdings wird || vor dem = ausgewertet und OR danach. Augenzwinkern Also mit || wird das Ergebnis gespeichert, mit OR wird die Speicherung ausgewertet.

Nochmal ein paar Beispiele zur Verdeutlichung - beides hätte jeweils das gleiche Verhalten:
php:
1:
2:
$a $b or $c;
($a $b) || $c;

php:
1:
2:
$a $b || $c;
$a = ($b or $c);


Zitat:
Original von oldgirl
danke dir werds gleich versuchen fröhlich

ps: in der schule wurd uns eindeutig was falsches erzählt

Naja.. die Lehrer werden das wahrscheinlich selbst nicht wissen. Augenzwinkern
Wenn noch Fragen bestehen, nur her damit.. falls du irgendwelche Messenger hast, kannst du mich da auch mal adden.. (ICQ-Nummer o.Ä. dann bitte per PN erfragen). Augenzwinkern


LG



Geschrieben von WuLana am 29.07.2012 um 15:57:

 

Zitat:
Original von Oli
Naja.. die Lehrer werden das wahrscheinlich selbst nicht wissen. Augenzwinkern
Wenn noch Fragen bestehen, nur her damit.. falls du irgendwelche Messenger hast, kannst du mich da auch mal adden.. (ICQ-Nummer o.Ä. dann bitte per PN erfragen). Augenzwinkern


Hehe das kann gut möglich sein,
wenn ich ma wieder wo ansteh werd ich dir ne pn senden großes Grinsen
Danke für die Hilfe fröhlich


Forensoftware: Burning Board, entwickelt von WoltLab GmbH