Trädvy Permalänk
Medlem
Plats
Onsala
Registrerad
Feb 2009

SQL syntax error

Hej,

Jag har fått problem med ett fel i min php-kod.
När jag kör koden så får jag följande fel:

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 'UPDATE) VALUES ('1','1','1','1','1')' at line 1

<?php $con = mysql_connect("localhost","xxx","xxx"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db(xxx", $con); $sql="INSERT INTO 123 (CONTACT, LAYOUT, LOOK, INFORMATION, UPDATE) VALUES ('$_POST[contact]','$_POST[layout]','$_POST[look]','$_POST[information]','$_POST[update]')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "1 record added"; mysql_close($con) ?>

Tack på förhand

Mikael

Trädvy Permalänk
Medlem
Plats
Årsta
Registrerad
Mar 2003

En vild gissning är att UPDATE är en reserverad ord i SQL. Testa att quota UPDATE med backticks (´UPDATE´).

Trädvy Permalänk
Medlem
Plats
at home
Registrerad
Mar 2004
Citat:

Ursprungligen inskrivet av F4n471c
En vild gissning är att UPDATE är en reserverad ord i SQL. Testa att quota UPDATE med backticks (´UPDATE´).

Stämmer bra det.

Kör med backticks så kommer det fungera.

En annan iakttagelse är att du inte sanerar datan från $_POST innan du använder den i din sql-query. Det är inte att rekommendera då det gör att din sql-query kan manipuleras. Googla på "SQL Injections" för mer info.

MVH/ Crazzir

Asus P8P67 Pro | Core i7 2600 | Sapphire Radeon R9 290 | A-DATA SSD 510

Trädvy Permalänk
Medlem
Plats
Onsala
Registrerad
Feb 2009

Var ska jag lägga in dessa då? Ska jag bara ändra i koden, eller ska jag ändra överallt där det står UPDATE?

Mikael

Trädvy Permalänk
Medlem
Plats
at home
Registrerad
Mar 2004

I din SQL-Query såhär:

$sql="INSERT INTO 123 (´CONTACT´,´LAYOUT´,´LOOK´,´INFORMATION´,´UPDATE´) VALUES ('$_POST[contact]','$_POST[layout]','$_POST[look]','$_POST[information]','$_POST[update]')";

Asus P8P67 Pro | Core i7 2600 | Sapphire Radeon R9 290 | A-DATA SSD 510

Trädvy Permalänk
Medlem
Registrerad
Jul 2001

vill du vara extra säker för att undvika namnproblem så gör du det med alla kolumnamn som Crazzir visar och inte bra på UPDATE

Har varit på detta forum på tok för länge...

Trädvy Permalänk
Medlem
Plats
Onsala
Registrerad
Feb 2009

Okej, nu är det gjort. Problemet är att jag fortfarande har samma fel, fast nu för alla posterna.
Jag antar att jag inte skulle ändra namnet i tabellen i databasen så att de heter just 'UPDATE'?

Mikael

Trädvy Permalänk
Medlem
Plats
at home
Registrerad
Mar 2004

tabellnamnen i databasen skall du inte ändra. Det du skall ändra är hur din queryn ser ut i ditt php-script. De skall vara så som jag postade några posts innan.

Asus P8P67 Pro | Core i7 2600 | Sapphire Radeon R9 290 | A-DATA SSD 510

Trädvy Permalänk
Medlem
Plats
Onsala
Registrerad
Feb 2009
Citat:

Ursprungligen inskrivet av crazzir
tabellnamnen i databasen skall du inte ändra. Det du skall ändra är hur din queryn ser ut i ditt php-script. De skall vara så som jag postade några posts innan.

Konstigt, fungerar fortfarande inte. Har samma fel som innan.

Trädvy Permalänk
Testpilot
Plats
Norrköping
Registrerad
Sep 2002
Citat:

Ursprungligen inskrivet av mgerner
Okej, nu är det gjort. Problemet är att jag fortfarande har samma fel, fast nu för alla posterna.
Jag antar att jag inte skulle ändra namnet i tabellen i databasen så att de heter just 'UPDATE'?

Mikael

Observera att du inte ska använda '-tecknet (det som sitter bredvid Ä) utan det är `-tecknet som gäller, det gör du genom att trycka skift+(tangenten bredvid backspace) och sen göra ett mellanslag.

Runt själva värdena som du ska spara är det dock '-tecknet som gäller så det är alltså två olika tecken du ska hålla koll på men som ser rätt lika ut. Kolla crazzirs post så ser du att det är två olika tecken han använder

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 8GB][Gigabyte GeForce GTX 970 G1 Gaming]

Trädvy Permalänk
Medlem
Plats
Onsala
Registrerad
Feb 2009
Citat:

Ursprungligen inskrivet av hunden
Observera att du inte ska använda '-tecknet (det som sitter bredvid Ä) utan det är `-tecknet som gäller, det gör du genom att trycka skift+(tangenten bredvid backspace) och sen göra ett mellanslag.

Nu så!
Jag hade skrivit ´ istället för ` och det krånglade till det lite.
Stort tack för att ni tog er tid att hjälpa mig att lösa problemet! Bli inte förvånade om ni får se fler poster från en riktig php-nybörjare som jag...

Mikael

Trädvy Permalänk
Medlem
Plats
Västerås
Registrerad
Jun 2005

Eller låt helt enkelt bli att använda reserverade ord. Hur svårt kan det vara.

Sedan använd ett eget påhittat prefix för dina tabell kolumn namn.

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.

Trädvy Permalänk
Medlem
Plats
at home
Registrerad
Mar 2004
Citat:

Ursprungligen inskrivet av BlueEyes
Eller låt helt enkelt bli att använda reserverade ord. Hur svårt kan det vara.

Sedan använd ett eget påhittat prefix för dina tabell kolumn namn.

Eller, ha alltid för vana att använda backticks kring tabell/kolumnamn för att inte behöva limiteras av de reserverade "ord" som finns.

Asus P8P67 Pro | Core i7 2600 | Sapphire Radeon R9 290 | A-DATA SSD 510

Trädvy Permalänk
Medlem
Plats
Västerås
Registrerad
Jun 2005
Citat:

Ursprungligen inskrivet av crazzir
Eller, ha alltid för vana att använda backticks kring tabell/kolumnamn för att inte behöva limiteras av de reserverade "ord" som finns.

Du gjorde ett inlägg bara för att fortsätta traggla antar jag

Klart man kan använda backticksen

Dock vet du lika väl som jag att det är onödigt och dumt att använda dom reserverade orden.

Det hela handlar om en fråga om personlig smak och hur man vill programmera.

Limiteras ? du menar "Begränsas" som är det svenska ordet. om man har lite fantasi och använder prefix eller suffix så löser det sig. prova vet ja. det är inte så hemskt.

Men jag föredrar att inte använda reserverade orden av anledningen jag angav ovan.

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.

Trädvy Permalänk
Medlem
Plats
at home
Registrerad
Mar 2004
Citat:

Ursprungligen inskrivet av BlueEyes
Du gjorde ett inlägg bara för att fortsätta traggla antar jag

Klart man kan använda backticksen

Dock vet du lika väl som jag att det är onödigt och dumt att använda dom reserverade orden.

Det hela handlar om en fråga om personlig smak och hur man vill programmera.

Limiteras ? du menar "Begränsas" som är det svenska ordet. om man har lite fantasi och använder prefix eller suffix så löser det sig. prova vet ja. det är inte så hemskt.

Men jag föredrar att inte använda reserverade orden av anledningen jag angav ovan.

Självklart handlar det om vad man själv föredrar. Jag ser ingen nackdel i att kunna använda just de kolumnnamn man vill ha utan något prefix eller sufix men samtidigt är det ju rätt enkelt att använda ett prefix till alla kolumner. Sen är det visserligen lika enkelt att sätta kolumnnamnen inom backticks. Som vi båda sagt så är det helt enkelt upp till var och en.

"Begränsas" är kanske ett bättre ord om man vill locka en äldre publik, men "limitera" är lika korrekt. (Inte för att det är särskilt viktigt i sammanhanget)

http://www.svenskaakademien.se/web/Ordlista.aspx

Asus P8P67 Pro | Core i7 2600 | Sapphire Radeon R9 290 | A-DATA SSD 510