login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Insert form probleem

Offline Designick - 12/06/2009 17:18
Avatar van DesignickNieuw lid Hallo,

Ik ben bezig om een profielpagina te ontwikkelen.
Alleen wil ik dat hij hem opslaat bij de gebruiker.
Ik kom er niet uit waar ik de WHERE session moet plaatsen.
  1. <?php
  2. $con = mysql_connect("localhost","***","*****");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("****", $con);
  9.  
  10. $sql="INSERT INTO gebruikers (name, leeftijd) VALUES ('$_POST[naam]','$_POST[leeftijd]') WHERE id = '".$_SESSION['user_id']."'";
  11.  
  12. if (!mysql_query($sql,$con))
  13. {
  14. die('Error: ' . mysql_error());
  15. }
  16. echo "<h1>Toegevoegd!</h1>";
  17.  
  18. ?>

Bij deze code krijgt ik de volgende fout: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = ''' at line 1

Alvast bedankt.

28 antwoorden

Gesponsorde links
Offline Bart - 12/06/2009 17:22 (laatste wijziging 12/06/2009 17:23)
Avatar van Bart PHP expert
  1. $sql="INSERT INTO `gebruikers` (`name`, `leeftijd`) VALUES ('".$_POST[naam]."', '".$_POST[leeftijd]."');


Edit: Query aangepast
Offline Scott - 12/06/2009 17:22 (laatste wijziging 12/06/2009 17:49)
Avatar van Scott Gouden medaille

PHP ver gevorderde
Ehm, je wil een insert-query uitvoeren met een where ?

edit:

Quicky heeft er kennelijk nog een paar edits voor nodig om de goede te plaatsen, dus hierbij:

  1. $sql="INSERT INTO `gebruikers` (`name`, `leeftijd`) VALUES ('".$_POST[naam]."', '".$_POST[leeftijd]."')";


FYI Quicky, je was een " vergeten.
Offline Designick - 12/06/2009 17:28
Avatar van Designick Nieuw lid Moet gewoon kunnen toch?
Dat is hetzelfde als je je eigen profiel pagina Update.
Ik probeer nog even door, alvast bedankt voor de reacties.
Offline timmie_loots - 12/06/2009 17:30 (laatste wijziging 12/06/2009 17:35)
Avatar van timmie_loots PHP gevorderde
Designick schreef:
Moet gewoon kunnen toch?
Dat is hetzelfde als je je eigen profiel pagina Update.
Ik probeer nog even door, alvast bedankt voor de reacties.


Ehh, nee, kan niet.

EDIT:
Ah, je zoekt het update statement. Probeer zoiets:

  1. <?php
  2.  
  3. $sql = "UPDATE `gebruikers` SET `name` = '" . mysql_real_escape_string($_POST['naam'], $con) . "', `leeftijd` = " . (int)$_POST['leeftijd'] . " WHERE `id` = " . (int)$_SESSION['user_id'];
  4.  
  5. ?>
Offline Scott - 12/06/2009 17:31
Avatar van Scott Gouden medaille

PHP ver gevorderde
Nee, dat kan niet. Wat jij nu wil is een rij invoegen waarbij de naam en leeftijd al een waarde hebben. Maar die rij bestaat nog niet, dus die heeft ook geen naam en leeftijd.
Offline Bart - 12/06/2009 17:34 (laatste wijziging 12/06/2009 17:35)
Avatar van Bart PHP expert
  1. $sql="INSERT INTO `gebruikers` (`name`, `leeftijd`) VALUES ('".$_POST['naam']."', '".$_POST['leeftijd']."')";


@Scott; als we dan gaan muggenziften, jij was 4x enkele quotes vergeten.. leuk he muggenziften?
Offline Designick - 12/06/2009 17:35
Avatar van Designick Nieuw lid Dus ik zou UPDATE moeten gebruiken?
Offline Bart - 12/06/2009 17:37
Avatar van Bart PHP expert Google.com: UPDATE SQL Statement
Offline Designick - 12/06/2009 17:39
Avatar van Designick Nieuw lid
timmie_loots schreef:
[..quote..]

Ehh, nee, kan niet.

EDIT:
Ah, je zoekt het update statement. Probeer zoiets:

[..code..]


Bij deze krijg ik de volgende foutmelding: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`name`, `leeftijd`) VALUES ('', '18')' at line 1
Offline timmie_loots - 12/06/2009 17:39 (laatste wijziging 12/06/2009 17:47)
Avatar van timmie_loots PHP gevorderde
Designick schreef:
Dus ik zou UPDATE moeten gebruiken?


Ja, zie mijn post.

@Quicky: Vind je nou echt dat jij je in een geschikte positie bevindt om zó eigenwijs te gaan lopen doen :')
Offline ibmos2warp - 12/06/2009 17:40
Avatar van ibmos2warp PHP interesse
Scott schreef:
Nee, dat kan niet. Wat jij nu wil is een rij invoegen waarbij de naam en leeftijd al een waarde hebben. Maar die rij bestaat nog niet, dus die heeft ook geen naam en leeftijd.

En toch is het de beste van al.
Jij verbeterde Quicky ook nog eens verkeerd. Altijd leuk Google.be: sql injections.
Alleen jammer van die backticks.
Offline Designick - 12/06/2009 17:42
Avatar van Designick Nieuw lid
timmie_loots schreef:
[..quote..]

Ja, zie mijn post.

@Hierboven: Vind je nou echt dat jij je in een geschikte positie bevindt om zó eigenwijs te gaan lopen doen :')


Ik zag je reactie pas later vriend  
Offline timmie_loots - 12/06/2009 17:44 (laatste wijziging 12/06/2009 17:46)
Avatar van timmie_loots PHP gevorderde
Designick schreef:
[..quote..]

Bij deze krijg ik de volgende foutmelding: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`name`, `leeftijd`) VALUES ('', '18')' at line 1


Eh, dat kan niet als je mijn query gebruikt. Plaats je code zoals hij nu is eens?

@ibmos2warp: Met de query van Scott is niets mis, die van Quicky zal gewoonweg niet werken. Die van Quicky is dus ook niet de beste.

Designick schreef:
Ik zag je reactie pas later vriend

Sorry, de posts zaten iets te dicht tegen elkaar. Het "@Hierboven" was niet voor jou maar voor Quicky bestemd.
Offline Designick - 12/06/2009 17:49
Avatar van Designick Nieuw lid Okee haha ik ben met je code bezig heb nu dit:
  1. <?php
  2. $con = mysql_connect("localhost","**","**");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("**", $con);
  9.  
  10.  
  11. $sql = "UPDATE `gebruikers` SET `name` = '" . mysql_real_escape_string($_POST['name'], $con) . "', `leeftijd` = " . (int)$_POST['leeftijd'] . " WHERE `id` = " . (int)$_SESSION['user_id'];
  12.  
  13. if (!mysql_query($sql,$con))
  14. {
  15. die('Error: ' . mysql_error());
  16. }
  17. echo "<h1>Toegevoegd!</h1>";
  18.  
  19. ?>


Hij geeft nu aan dat de hij is toegevoegd alleen wordt hij toch niet in de DB geplaatst.  
Offline Scott - 12/06/2009 17:51 (laatste wijziging 12/06/2009 17:51)
Avatar van Scott Gouden medaille

PHP ver gevorderde
Bestaat er wel een gebruiker met de username en leeftijd die jij opgeeft ?

Probeer deze code eens en kijk wat er uit komt:

  1. <?php
  2. $con = mysql_connect("localhost","**","**");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("**", $con);
  9.  
  10.  
  11. $sql = "UPDATE `gebruikers` SET `name` = '" . mysql_real_escape_string($_POST['name'], $con) . "', `leeftijd` = " . (int)$_POST['leeftijd'] . " WHERE `id` = " . (int)$_SESSION['user_id'];
  12.  
  13. if (!mysql_query($sql,$con))
  14. {
  15. die('Error: ' . mysql_error());
  16. }
  17.  
  18. if (mysql_affected_rows() < 1) {
  19.  
  20. die('Niet gevonden');
  21. }
  22. echo "<h1>Toegevoegd!</h1>";
  23.  
  24. ?>
Offline timmie_loots - 12/06/2009 17:52
Avatar van timmie_loots PHP gevorderde Wellicht is het nodig om even goed te herhalen wat je precies wilt, want je topictitel en topicstart spreken elkaar nogal tegen. Wil je een nieuwe gebruiker in de database invoegen? Of wil je de gegevens van een bestaande gebruiker bijwerken?

In het eerste geval vraag ik me toch af waar je het id uit de sessie vandaan trekt (immers, hoe kan het id van een nog niet bestaande gebruiker in een sessie staan).
Offline Designick - 12/06/2009 17:57 (laatste wijziging 12/06/2009 17:59)
Avatar van Designick Nieuw lid Nee het is een profielpagina waar al gegevens in staan; NAAM en LEEFTIJD zijn 1 van de dingen die erin staan. Deze moeten veranderd kunnen worden! Dus geupdate.

Scott, ik heb je code getest en ik krijg 'Niet gevonden' te zien ;)
Offline Scott - 12/06/2009 18:04
Avatar van Scott Gouden medaille

PHP ver gevorderde
Dan staan de naam en leeftijd die jij opgeeft er niet in. Echo die eens en kijk of die (combinatie van) naam en leeftijd er precies zo in staat.
Offline timmie_loots - 12/06/2009 18:12
Avatar van timmie_loots PHP gevorderde Designick, zet ná de regel die begint met "$sql = " eens een echo van die variabele, zodat je kunt zien wat de query precies is. Dan kun je met behulp van PHPMyAdmin (ik neem aan dat je dat gebruikt?) kijken of je die query met de hand kunt draaien, en of hij dan ook niet werkt.
Offline Designick - 12/06/2009 18:13 (laatste wijziging 12/06/2009 18:15)
Avatar van Designick Nieuw lid
Scott schreef:
Dan staan de naam en leeftijd die jij opgeeft er niet in. Echo die eens en kijk of die (combinatie van) naam en leeftijd er precies zo in staat.


EDIT: Het probleem zit m in de Session geloof ik met me Echo $sql; krijg ik t volgende

UPDATE `gebruikers` SET `name` = 'Nicky Noordijk', `leeftijd` = 17 WHERE `id` = 0Niet gevonden
Offline Scott - 12/06/2009 18:14 (laatste wijziging 12/06/2009 23:26)
Avatar van Scott Gouden medaille

PHP ver gevorderde
Excuses, ik had de code fout geïnterpreteerd. Je kijkt of een bepaald id overeenkomt met die uit de sessie, maar dat is niet zo, daarom krijg je die foutmelding. Je moet dus kijken of die sessie überhaupt bestaat en een id heeft, en dan kijken in de database of dat datzelfde id daar staat.
Offline Designick - 12/06/2009 18:19
Avatar van Designick Nieuw lid
Scott schreef:
Excuses, ik had de code fout geïnterpreteerd. Je kijkt of een bepaald id overeenkomt met die uit de sessie, maar dat is niet zo, daarom krijg je die foutmelding. Je moet dus kijken of die sessie überhaupt bestaat en een id heeft, en dan kijken in de database of dat datzelfde id daar staat.


In principe ben ik gewoon ingelogd en gebruik ik die Session bij meerdere pagina's ;) maar hij zit me id niet want hij zou ID 29 moeten aangeven
Offline timmie_loots - 12/06/2009 18:33
Avatar van timmie_loots PHP gevorderde Ah, dan is het handig om $_SESSION['user_id'] even te echo'en, want waarschijnlijk zit daar niet in wat je (of in ieder geval ik) verwacht.
Offline Designick - 12/06/2009 18:38
Avatar van Designick Nieuw lid
timmie_loots schreef:
Ah, dan is het handig om $_SESSION['user_id'] even te echo'en, want waarschijnlijk zit daar niet in wat je (of in ieder geval ik) verwacht.


Ik echo $_SESSION['user_id']; maar krijg niets te zien... Ja alleen Niets gevonden.
Offline timmie_loots - 12/06/2009 19:00
Avatar van timmie_loots PHP gevorderde Dan is die sessie dus leeg. Geef anders het script waar je die inhoud geeft even, dan kunnen we voor je kijken of daar wellicht iets mis is gegaan.
Offline Designick - 12/06/2009 21:22
Avatar van Designick Nieuw lid Je bedoelt het inloggen toch? Dat gebeurt hier: Plaatscode: 136864
Offline timmie_loots - 12/06/2009 23:25
Avatar van timmie_loots PHP gevorderde Hmm, lijkt niets mis mee te zijn. Maak eens een nieuwe pagina, met alleen maar dit erin:

  1. <?php
  2.  
  3.  
  4. echo "<pre>" . print_r($_SESSION, true) . "</pre>";
  5. echo "<pre>" . print_r($_COOKIE, true) . "</pre>";
  6.  
  7. ?>


En laat eens zien wat daar de output van is.
Offline Designick - 17/06/2009 17:20
Avatar van Designick Nieuw lid
timmie_loots schreef:
Hmm, lijkt niets mis mee te zijn. Maak eens een nieuwe pagina, met alleen maar dit erin:

[..code..]

En laat eens zien wat daar de output van is.


Sorry van me erg late reactie maar dit is de output:

Array
(
[user_id] => 29
[user_status] => 1
)

Array
(
[PHPSESSID] => e63aaf130002ed0013fb9343eb486858
)

Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.263s