Query doet niet wat hij moet
Code (php)
1
2
3
4
2
3
4
<?php
$q2 = mysql_query("SELECT * FROM `members` WHERE `username` = '".$_POST['username']."'");
$q3 = mysql_fetch_assoc($q2);
?>
$q2 = mysql_query("SELECT * FROM `members` WHERE `username` = '".$_POST['username']."'");
$q3 = mysql_fetch_assoc($q2);
?>
Deze query geeft als echo : Resource id #5. Hier zou hij normaal toch de username in de post moet checken of die al in de DB staat ?
Gesponsorde koppelingen:
Wat echo je?
Als je echo $q2 doet geeft hij dit idd.
Als je wilt weten of hij bestaat kun je bv met mysql_num_rows($q2) nakijken.
Er zijn ook andere methodes, maar ik heb de koffie nog niet op, dus het loopt wat stroef bovenin.
Als je echo $q2 doet geeft hij dit idd.
Als je wilt weten of hij bestaat kun je bv met mysql_num_rows($q2) nakijken.
Er zijn ook andere methodes, maar ik heb de koffie nog niet op, dus het loopt wat stroef bovenin.
ik echo q2
gebruik geen * dit is een wildcard selecteer wat je wilt
mysql injectie mogelijk!
mysql injectie mogelijk!
SQL Injectie mogelijk.
Weg met `backticks`.
Query -> Data fetchen -> While loop -> echo op scherm.
Weg met `backticks`.
Query -> Data fetchen -> While loop -> echo op scherm.
Gewijzigd op 05/01/2011 11:57:10 door - Dave -
de ene zegt wel backticks , de andere niet , was ist nu :p
Niet gebruiken. Het is helemaal niet nodig.
Backticks zijn een truck van MySQL om gereserveerde woorden te kunnen gebruiken. Dit moet je niet willen.
Om dit te voorkomen is het verstandig om nooit backticks te gebruiken (En het scheelt weer dataverkeer naar je server maar dat performence verschil zal niet snel merkbaar zijn)
Om dit te voorkomen is het verstandig om nooit backticks te gebruiken (En het scheelt weer dataverkeer naar je server maar dat performence verschil zal niet snel merkbaar zijn)
Nog steeds geen oplossing gevonden voor dit probleem :(
echo dit is :
wat is dan precies je probleem ? jij vraagt of de username in de post gechecked word in de database. Antwoord is ja, hij haalt door je * alles op, wat als username de post username heeft.
Nicolas Pierre op 05/01/2011 11:52:33:
ik echo q2
q2 heeft in jouw code het resultaat van de query, niet de opgevraagde waarden. Je moet q3 echo'en (of toch een deel van de array q3).
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$q2 = mysql_query("SELECT * FROM `members` WHERE `username` = '".$_POST['username']."'") or die(mysql_error());
$q3 = mysql_fetch_assoc($q2);
echo $q3['username'] . PHP_EOL;
?>
$q2 = mysql_query("SELECT * FROM `members` WHERE `username` = '".$_POST['username']."'") or die(mysql_error());
$q3 = mysql_fetch_assoc($q2);
echo $q3['username'] . PHP_EOL;
?>
En als er meerdere mensen zijn met die username dan moet je die in een while-lus plaatsen:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$q2 = mysql_query("SELECT * FROM `members` WHERE `username` = '".$_POST['username']."'") or die(mysql_error());
while($q3 = mysql_fetch_assoc($q2))
{
echo $q3['username'] .'<br />' . PHP_EOL;
}
?>
$q2 = mysql_query("SELECT * FROM `members` WHERE `username` = '".$_POST['username']."'") or die(mysql_error());
while($q3 = mysql_fetch_assoc($q2))
{
echo $q3['username'] .'<br />' . PHP_EOL;
}
?>
Gewijzigd op 05/01/2011 15:11:32 door Kevin de Groot
of print_r($q3)
Ok hij echot nu de juiste username maar nog steeds gaat hij die dan inserten in de DB wa dus niet mag :(
wat met deze code dus niet zou mogen
Code (php)
wat met deze code dus niet zou mogen
Dan moet je in die de else van die voorwaarde de code plaatsen die dat dan gaat inserten.
Laat de hele code zien en bouw goede foutafhandeling in, dus geen die().
je hoeft geen die te gebruiken je kunt ook gewoon echo gebruiken, want die word toch sterk afgeraden:
Code (php)
Gewijzigd op 05/01/2011 16:28:35 door Teun Hesseling
Ik denk dat je bedoelt dat die(); zal worden afgeraden. Dat terzijde; je kunt beter even je code plaatsen.
Teun Hesseling op 05/01/2011 16:16:42:
haha klopt, fail :p



