login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Probleem met SQL query in php

Offline michielvsb - 14/10/2006 13:56 (laatste wijziging 14/10/2006 14:16)
Avatar van michielvsbHTML interesse Als ik deze query probeer uit te voeren in php, werkt hij niet. Echter, ik heb dezelfde query proberen uit te voeren in phpmyadmin met normale waarden, en hier werkt hij wel. Zodra iemand de volledige code nodig heeft zal ik die op plaatscode.be zetten. Ik weet zeker dat de database connectie in orde is, en dat de rest van het script geen fouten geeft.

  1. if (count($fouten) != 0)
  2. {
  3. foreach($fouten as $fout) {
  4. echo $fout."<br />";
  5. }
  6. }
  7. else
  8. {
  9. // Deze query:
  10. $query = "INSERT INTO leden (gebruikersnaam, wachtwoord, email, naam, voornaam) VALUES
  11. ('".$_POST["gebruikersnaam"]."', '".md5($_POST["wachtwoord"])."', '".$_POST["email"]."', '".$_POST["naam"]."', '".$_POST["voornaam"]."');";
  12. if(mysql_query($query)) {
  13. echo "Je bent succesvol geregistreerd. Je kan nu inloggen met je gebruikersnaam en wachtwoord<br /><br />";
  14. }
  15. }
  16. }

Alvast bedankt

13 antwoorden

Gesponsorde links
Offline GTW - 14/10/2006 14:03 (laatste wijziging 14/10/2006 14:06)
Avatar van GTW Gouden medaille

PHP gevorderde
ik gebruik altijd bij $_POST een single quote ipv een dubbele. misschien dat het daaraan kan liggen?
en krijg je errors? of voert hij bepaalde onderdelen niet in.

Edit: misschien dat het in je query ook eraan kan liggen dat je daar ; in hebt staan. ik heb geloof ik wel eens ergens geleszen dat phpmyadmin dat wel gebruikt, maar een gewone query niet.
Offline michielvsb - 14/10/2006 14:10 (laatste wijziging 14/10/2006 14:12)
Avatar van michielvsb HTML interesse Ok, ik zal het even proberen.

Edit: nee, hier ligt het niet aan. Ik heb beide geprobeerd. Ik krijg ook geen error, er gebeurt gewoon niets in de database.
Offline GTW - 14/10/2006 14:14
Avatar van GTW Gouden medaille

PHP gevorderde
// Deze query: $query = "INSERT

daar moet je de // weghalen... nu ziet hij de halve query als aantekening.
Offline michielvsb - 14/10/2006 14:15
Avatar van michielvsb HTML interesse Nee, staat niet in de echte code, alleen hier als aantekening, maar je hebt gelijk, het is fout.
Offline Nrzonline - 14/10/2006 14:18 (laatste wijziging 14/10/2006 14:19)
Avatar van Nrzonline PHP ver gevorderde Gebruik ook even mysql_error... en die ; binnen quotes is nutteloos...

  1. <?PHP
  2. $query = "INSERT INTO leden
  3. (gebruikersnaam,
  4. wachtwoord,
  5. email,
  6. naam,
  7. voornaam)
  8. VALUES
  9. ('".$_POST['gebruikersnaam']."',
  10. '".md5($_POST['wachtwoord'])."',
  11. '".$_POST['email']."',
  12. '".$_POST['naam']."',
  13. '".$_POST['voornaam']."')";
  14. if(mysql_query($query))
  15. {
  16. echo "Je bent succesvol geregistreerd. Je kan nu inloggen met je gebruikersnaam en wachtwoord<br /><br />";
  17. }
  18. else
  19. {
  20. echo "Fout in query: " . mysql_error ();
  21. }
  22. ?>
Offline GTW - 14/10/2006 14:18
Avatar van GTW Gouden medaille

PHP gevorderde
misschien da dit het is:

je vraagt eerst of fouten niet gelijk is aan 0.

zet eens naast je query, in de else dus, echo "Gelukt!";
als hij dat als niet eens weergeeft hb je $fouten dus al ergens gedeclareerd of verkeerd aangeropen waardoor hij hem niet ziet als 0.
hebje er een array van gemaakt?
Offline Nrzonline - 14/10/2006 14:21 (laatste wijziging 14/10/2006 14:22)
Avatar van Nrzonline PHP ver gevorderde @GTW,

Hij heeft dat "gelukt" al staan, maar dan als "Je bent succesvol ge...."
Echter heeft hij geen mysql_error weergave, dus als hij dat nou eerst is probeert (zie mijn vorige post voor voorbeeld)
Offline GTW - 14/10/2006 14:22
Avatar van GTW Gouden medaille

PHP gevorderde
hehe, ja oke... zo probeer ik altijd ff uit.
Maar als hij dat al niet weergeeft dan is $fouten dus verkeerd aangevraagd, toch?
Offline michielvsb - 14/10/2006 14:22
Avatar van michielvsb HTML interesse Output: Fout in query: Data too long for column 'wachtwoord' at row 1

Er zijn 18 tekens toegestaan, dus varchar (18), terwijl ik een wachtwoord van 6 tekens ingeef?

Kijk hier:
  1. --
  2. -- Tabel structuur voor tabel `leden`
  3. --
  4.  
  5. CREATE TABLE `leden` (
  6. `id` tinyint(4) NOT NULL auto_increment,
  7. `gebruikersnaam` varchar(60) NOT NULL,
  8. `email` varchar(60) NOT NULL,
  9. `wachtwoord` varchar(18) NOT NULL,
  10. `naam` varchar(60) NOT NULL,
  11. `voornaam` varchar(60) NOT NULL,
  12. PRIMARY KEY (`id`)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
Offline GTW - 14/10/2006 14:23 (laatste wijziging 14/10/2006 14:23)
Avatar van GTW Gouden medaille

PHP gevorderde
een md5 codering is 32 tekens lang ;)

dus moet je wachtwoord veld ook 32 tekens zijn.
Offline Nrzonline - 14/10/2006 14:24 (laatste wijziging 14/10/2006 14:25)
Avatar van Nrzonline PHP ver gevorderde Als je wil weten of $fouten uberhaupt bestaat, dan gebruik je gewoon een keertje die ($fouten); En error_reporting (E_ALL); kan daar ook handig voor zijn . Dan zou hij iets zeggen als "undifined variable $fouten blablabla.."

/edit

Ja, md5 codeerd je wachtwoord altijd in 32 karakters.
Offline michielvsb - 14/10/2006 14:25
Avatar van michielvsb HTML interesse Nu kan ik toch wel weer vloeken! Daar had ik dan weer niet bij stil gestaan. Ik ben het zo gewend om altijd een md5 te gebruiken, maar daar had ik niet bij nagedacht. Heel erg bedankt, hoor!!!

     
Offline Nrzonline - 14/10/2006 14:26 (laatste wijziging 14/10/2006 14:27)
Avatar van Nrzonline PHP ver gevorderde Mjah hint: altijd mysql_error (); gebruiken na je query..

  1. <?PHP
  2. $sQuery = "SELECT * FROM voorbeeld";
  3. $qSelLeden = mysql_query ($sQuery) or die (mysql_error ());
  4. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.219s