Toon posts:

[MySQL] Waar zit de fout?!

Pagina: 1
Acties:

Verwijderd

Topicstarter
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 'desc='Test1' WHER

Deze error krijg ik dus als ik via PHP het volgende commando wil uitvoeren:

code:
1
mysql_query("UPDATE galleries SET desc='$new_desc' WHERE id='$new_id'");


$new_desc is "Test1".
$new_id is de id waar MySQL het record aan moet herkennen, deze klopt ook gewoon.
Ondanks dat ik volgens mij gewoon een goeie MySQL syntax gebruik geeft ie een error!
Ook als ik er LIMIT 1 achter zet oid. krijg ik dezelfde foutmelding.

Het vreemde is, als ik dit doe met een ander veld, werkt het wel gewoon:
code:
1
mysql_query("UPDATE galleries SET ctr='$new_ctr' WHERE id='$new_id'");


Daarbij geeft ie dus geen errors.

Dit komt waarschijnlijk omdat "ctr" een int(15) is. En "desc" is een varchar(75) met "latin1_swedish_ci" collatie ofzo, dit heeft phpMyAdmin aangemaakt.

Als ik dan in phpMyAdmin 'desc' verander en de query bekijk is dat deze:

code:
1
UPDATE `galleries` SET `desc` = 'Test1' WHERE `id` =1133790113448457000 AND CONVERT( `url` USING utf8 ) = 'http://www.test1.com/'


Maar deze kan ik niet kopieren, omdat in 1 query alle velden kunnen veranderen, alleen de 'id' blijft hetzelfde.

Snapt iemand hier nog wat van?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-04 15:11

Bosmonster

*zucht*

desc is een reserved woord

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-04 22:00
Gooi naar de koelkast: Jouw veld desc is een gereserveerd woord in MySQL. DESC is er voor om aflopend te sorteren.
1 stomme oplossing is gebruik maken van backtick's, die kwootjes die je ook gebruikt in jouw laatste code-sample (die van phpmyadmin)
2 andere oplossing is om geen gereserveerde woorden op te nemen als tabelnaam en/of kolomnamen.

[ Voor 18% gewijzigd door Sybr_E-N op 06-12-2005 15:31 ]


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 16-04 11:36

pjvandesande

GC.Collect(head);

Kun je ze bij MySQL niet tussen square brackets zetten?

code:
1
UPDATE [galleries] SET [desc] = 'whiehoe'

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-04 15:11

Bosmonster

*zucht*

questa schreef op dinsdag 06 december 2005 @ 15:33:
Kun je ze bij MySQL niet tussen square brackets zetten?

code:
1
UPDATE [galleries] SET [desc] = 'whiehoe'
Daar zijn in MySQL backticks voor.

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 16-04 11:36

pjvandesande

GC.Collect(head);

Bosmonster schreef op dinsdag 06 december 2005 @ 15:34:
[...]


Daar zijn in MySQL backticks voor.
Nee, natuurlijk doet MySQL dat niet met square brackets :Y)
Maar anyway, dan zou 'desc' toch geen problemen moeten leveren?

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:33
desc is zoals gezegd al een gereserveerd woord:
-ofwel backticks gebruiken
-ofwel je veld een andere naam geven

Daarbij komt ook nog eens dat je geen quotes rond numerieke waarden moet zetten. Als je $id dus een numeriek veld is, zorg er dan voor dat je er geen quotes rond zet.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Heb er maar descrip van gemaakt. Werkt nu, thanks.
"backticks" doet mijn editor (joe) niet.

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 16:06

Salandur

Software Engineer

Verwijderd schreef op dinsdag 06 december 2005 @ 15:50:
Heb er maar descrip van gemaakt. Werkt nu, thanks.
"backticks" doet mijn editor (joe) niet.
description is nog altijd beter, omdat de naam dan ook gelijk omschrijft wat er in zit

Assumptions are the mother of all fuck ups | iRacing Profiel


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Verwijderd schreef op dinsdag 06 december 2005 @ 15:50:
Heb er maar descrip van gemaakt. Werkt nu, thanks.
"backticks" doet mijn editor (joe) niet.
Twee keer doen. Eén backtick geeft de mogelijkheid een control-karakter in te voegen, twee backticks voegt een daadwerkelijke backtick in.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.

Pagina: 1