Versio

Query doet niet wat hij moet

Overzicht Reageren

Nicolas Pierre

Nicolas Pierre

05/01/2011 11:20:07
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$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 ?
 
PHP hulp

PHP hulp

25/05/2012 13:43:20
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Tobias Tobias

Tobias Tobias

05/01/2011 11:47:22
Quote Anchor link
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.
 
Nicolas Pierre

Nicolas Pierre

05/01/2011 11:52:33
Quote Anchor link
ik echo q2
 
Jordi kroon
Redacteur

jordi kroon

05/01/2011 11:55:22
Quote Anchor link
gebruik geen * dit is een wildcard selecteer wat je wilt
mysql injectie mogelijk!
 
- Dave -

- Dave -

05/01/2011 11:56:40
Quote Anchor link
SQL Injectie mogelijk.
Weg met `backticks`.

Query -> Data fetchen -> While loop -> echo op scherm.
Gewijzigd op 05/01/2011 11:57:10 door - Dave -
 
Nicolas Pierre

Nicolas Pierre

05/01/2011 12:00:35
Quote Anchor link
de ene zegt wel backticks , de andere niet , was ist nu :p
 
- Dave -

- Dave -

05/01/2011 12:01:43
Quote Anchor link
Niet gebruiken. Het is helemaal niet nodig.
 
TJVB tvb

TJVB tvb

05/01/2011 12:06:48
Quote Anchor link
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)
 
Nicolas Pierre

Nicolas Pierre

05/01/2011 14:01:32
Quote Anchor link
Nog steeds geen oplossing gevonden voor dit probleem :(
 
Teun Hesseling

Teun Hesseling

05/01/2011 14:10:47
Quote Anchor link
echo dit is :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $q3['username'];
?>
 
Gerhard l

gerhard l

05/01/2011 14:10:53
Quote Anchor link
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.
 
Jens V

Jens V

05/01/2011 14:16:14
Quote Anchor link
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).
 
Kevin de Groot

Kevin de Groot

05/01/2011 15:10:49
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;

?>


En als er meerdere mensen zijn met die username dan moet je die in een while-lus plaatsen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}


?>
Gewijzigd op 05/01/2011 15:11:32 door Kevin de Groot
 
John D

John D

05/01/2011 15:19:02
Quote Anchor link
of print_r($q3)
 
Nicolas Pierre

Nicolas Pierre

05/01/2011 16:09:14
Quote Anchor link
Ok hij echot nu de juiste username maar nog steeds gaat hij die dan inserten in de DB wa dus niet mag :(

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

if($q3->username == $_POST['username']) {
    
die('<BR><BR>Sorry, but the username "'.$q3->username.'" is taken, please choose another.');
}

?>


wat met deze code dus niet zou mogen
 
Kevin de Groot

Kevin de Groot

05/01/2011 16:13:48
Quote Anchor link
Dan moet je in die de else van die voorwaarde de code plaatsen die dat dan gaat inserten.
 
- Dave -

- Dave -

05/01/2011 16:14:16
Quote Anchor link
Laat de hele code zien en bouw goede foutafhandeling in, dus geen die().
 
Teun Hesseling

Teun Hesseling

05/01/2011 16:16:42
Quote Anchor link
je hoeft geen die te gebruiken je kunt ook gewoon echo gebruiken, want die word toch sterk afgeraden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($q3->username == $_POST['username']) {
    
echo '<BR><BR>Sorry, but the username "'.$q3->username.'" is taken, please choose another.';
}

?>
Gewijzigd op 05/01/2011 16:28:35 door Teun Hesseling
 
Kevin de Groot

Kevin de Groot

05/01/2011 16:25:52
Quote Anchor link
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:
je hoeft geen die te gebruiken je kunt ook gewoon echo gebruiken, want echo word toch sterk afgeraden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($q3->username == $_POST['username']) {
    
echo '<BR><BR>Sorry, but the username "'.$q3->username.'" is taken, please choose another.';
}

?>
 
Teun Hesseling

Teun Hesseling

05/01/2011 16:29:22
Quote Anchor link
haha klopt, fail :p
 



Overzicht Reageren