[php] error bij updaten tabel

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
He, ik ben met een forum bezig in php en mysql, en in dat forum kunnen mensen ook een soort rpg characters kiezen. Ze kunnen ook hun profile aanpassen en daar een andere character kiezen, alleen krijg ik telkens wanneer ik de code in de query heb staan om character up te daten, de volgende fout:

You have an error in your SQL syntax near 'character = '0' WHERE username = 'mijn username' AND password = 'mijn password' at line 1

Mijn code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
echo "
<select name=\"mage\">
<option value=\"0\" selected>Bystander</option>
<option value=\"1\">White Mage</option>
<option value=\"2\">Black Mage</option>
enz...
</select>";

mysql_query("UPDATE users SET ....andere actions..., character = '$_POST[mage]' 
WHERE username = '$_COOKIE[username2]' AND password = '$_COOKIE
[password2]' AND userid = '$_COOKIE[userid]'");


De kolom heet: character - Int(5) - Default 0

Tijdens het registreren op het forum lukt het allemaal wel, maar dit wil werkelijkwaar niet lukken, ik heb echt alles geprobeerd: zoals:
$mage = $_POST[mage] ofzow, maar dat wilde ook allemaal niet werken.
Ik heb echt geen idee waar dit aan kan liggen 8)7
En plz close deze topic niet, want ik kom er echt niet uit en heb alles geprobeerd...

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 17-09 22:12
En als je nou zelf die php_highligt van GoT bekijkt, wat is er dan zoiezo mis (Hint rood en ook $_POST).

Acties:
  • 0 Henk 'm!

  • pbregman
  • Registratie: Oktober 2001
  • Laatst online: 22-05-2023

pbregman

>:)

je select name tag is niet goed en je eerste option is niet gesloten begin daar eens mee

Specs


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
pbregman schreef op 12 november 2002 @ 20:11:
je select name tag is niet goed en je eerste option is niet gesloten begin daar eens mee
M'n select tag is wel goed, alleen filtert GoT die eerste slash eruit, enne, wat is er mis dan met mijn eerste option tag?
En nog iets: wat is er dan mis met mijn query?, want als ik enkel character = '$_POST[mage]' weghaal dan werkt alles wel, en ik heb de rest van de actions op de zelfde manier uitgevoerd dan dit, maar dit is het enige dat niet werkt.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

Je probeert een variabele van het type string in een kolom van het type integer te stoppen? Dat gaat niet werken.... (althans, zou me erg verbazen als MySQL dat wel pakte.. :P)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Die option tag is wel gesloten, maar wat niet kan is gewoon html tags neerprakken tussen <? en ?> ( gebruik dan print("zooi"); )

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb ook al varchar 255 gebruikt, en tijdens het registreren lukt het wel, en dan gebruik ik dezelfde manier :S

Wat dat laatste bericht: dat weet ik ook wel, maar ik laat dit gewoon zien als kleine samenvatting van de stukjes die van belang zijn.

{Edit}
Happy?
{/Edit}

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 12 november 2002 @ 20:19:
Heb ook al varchar 255 gebruikt, en tijdens het registreren lukt het wel, en dan gebruik ik dezelfde manier :S
Wil je zeggen dat als je varchar gebruikt, het dan wel lukt?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
gorgi_19 schreef op 12 November 2002 @ 20:22:
[...]

Wil je zeggen dat als je varchar gebruikt, het dan wel lukt?
Nee, maar welke moet ik anders gebruiken (ben nog niet super bekend met al die soorten)? En trouwens: bij Int en varchar lukt het gewoon registreren van een gebruiker wel en daar kan diegene ook al voor een character kiezen.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 12 November 2002 @ 20:23:
[...]


Nee, maar welke moet ik anders gebruiken? En trouwens: bij Int en varchar lukt het gewoon registreren van een gebruiker wel en daar kan diegene ook al voor een character kiezen.
* gorgi_19 kent alleen Access / MSSql (kleine disclaimer)

Wat me opviel:

'$_POST[mage]'

duidt bij mij op een variabele van het type string (door de single quotes). Je geeft aan dat de kolom een integer is; bij mij botst het.. Vandaar.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • sjon.
  • Registratie: November 2002
  • Laatst online: 14-01-2024
bou eerst je query es op ipv em meteen aan mysql_query mee te geven...
gebruik eventueel de concat (da's de punt) operator, of zoiets als sprintf();
kan je ook meteen aangeven of ie een int of string moet gebruiken...
PHP:
1
2
3
<?php
  $sql = sprintf('UPDATE tabel SET a = %d, b = \'%s\' WHERE c = 1', $_POST['id'], addslashes($_POST['name']));
?>

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat zal ik dan straks wel ff proberen (zit nu op schoolcomputer), maar waarom zou dat wel werken? en mijn eigen manier niet? want die heeft altijd gewerkt en nu doet hij het ineens niet meer...

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Dark_Phalanx:
You have an error in your SQL syntax near 'character = '0' WHERE username = 'mijn username' AND password = 'mijn password' at line 1

de "Near" in dit soort zinnen geeft gek genoeg vaak aan dat je fout ervoor zit. Post de volledige query even, zoals mysql 'm binnen krijgt:

PHP:
1
2
3
4
5
6
7
8
$query = "
   # vul maar in
";
if ( $result = mysql_query ( $query ) ) {
   // ...
} else {
   user_error ( "MySQL error: " . mysql_error () . "\n\nQuery:\n$query" );
}

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
M'n volledige code voor het updaten:

PHP:
1
2
3
4
5
6
7
8
9
10
11
if(mysql_query("UPDATE users SET firstname = '$_POST[firstname]', lastname = '$_POST
[lastname]', email = '$_POST[email]', signature = '$_POST[signature]', website = '$_POST
[website]', icq = '$icq2', msn = '$msn2', birthday = '$birthday', character = '$_POST[mage]' 
WHERE username = '$_COOKIE[username2]' AND password = '$_COOKIE[password2]' AND
 userid = '$_COOKIE[userid]'"))
{
echo "succesvol blablabla...";
}
else {
echo "mislukt blablabla...";
}


Zo gaat hij er uiteindelijk uitzien, maar ik heb om de fout te zien natuurlijk ff or die (mysql_error()) erbij gezet...
Maar als ik , character = '$_POST[mage]' weghaal, dan doet hij het gewoon prima :S En als ik character = '$_POST[mage]' ergens in het midden zet dan doet hij het ook niet, dus dan lijkt mij dat er daar iets fouts inzit of zoiets, maar het vreemde is dat het dezelfde code is als de rest 8)7

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

zucht... Post nou even de query die mysql binnen krijgt. Dus de geparsde string!

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jah, sorry, ben niet zo heel erg into die termen, maareh, wat bedoel je daar precies mee? de invoer?

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

*zucht*
PHP:
1
2
3
4
5
6
$query="UPDATE users SET firstname = '$_POST[firstname]', lastname = '$_POST 
[lastname]', email = '$_POST[email]', signature = '$_POST[signature]', website = '$_POST 
[website]', icq = '$icq2', msn = '$msn2', birthday = '$birthday', character = '$_POST[mage]' 
WHERE username = '$_COOKIE[username2]' AND password = '$_COOKIE[password2]' AND 
 userid = '$_COOKIE[userid]'";
mysql_query($query) or die(mysql_error());

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
*Sorry*

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

hmz... Je geeft toch een string mee aan mysql_query? Als je wilt weten hoe die string er precies uitziet, vervang dan mysql_query ff door print. Snap je nu wat ik bedoel?

offtopic:
D2k duidelijk niet :X :X :P

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, snap het :)
Heb dat ff gedaan, en kreeg deze uitvoer:

PHP:
1
2
3
4
5
6
UPDATE users SET firstname = 'Martijn', lastname = 'Nijensteen', email 
= 'martijn_nijensteen@planet.nl', signature = '[img]
http://martijnn.mine.nu/Forum/images/sig.jpg[/img]', website 
= 'http://martijnn.mine.nu', icq = 'N/A', msn = 'i_notgood@hotmail.com', birthday 
= 'N/A', character = '0' WHERE username = 'Martijn' AND password 
= '3c26f4f057679e5dbbe7de35f60abdce' AND userid = '1'

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

ik denk dat character dan gewoon een gereserveerd woord is.

Zet even `` backtick quotejes om je veldnamen heen, zodat je
PHP:
1
2
3
4
5
6
7
8
9
UPDATE 
   users 
SET 
   `firstname` = 'Martijn', 
   `lastname`= 'Nijensteen', 
   # etcetera
   `character` = '0'
WHERE
   # etcetera

krijgt.

(backtick quote zit doorgaans boven je tab).

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
W00t! Het werkt! Thnx guys! This topic is ready to close :)
Pagina: 1