foutmelding bij insert into

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pascal Wetzels

Pascal Wetzels

07/12/2012 14:50:05
Quote Anchor link
Ik krijg de volgende foutmelding als ik gegevens wil invoeren in mijn tabel:
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 '\'2012-12-07\', \'test\', \'2011\', \'piere\', \'baby\', \'rood\', \'yellow\', \' at line 2

De Sql heb ik gekopieerd vanuit phpmyadmin.
ik het in phpmyadmin een rij toegevoegd, de weergegeven sql, genereer php en deze gekopieerd.
ik weet niet wat er fout gaat.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$con
= mysql_connect("host","username","password");
if (!$con)
  {

  die('Could not connect: ' . mysql_error());
  }




$sql = "INSERT INTO `c2448_uitslagen`.`result` (`id`, `Datum`, `Show`, `Jaar`, `Keurmeester`, `Klasse`, `Kleur`, `Hond`, `Eigenaar`, `Uitslag`)
VALUES (NULL, \'2012-12-07\', \'test\', \'2011\', \'piere\', \'baby\', \'rood\', \'yellow\', \'blue\', \'u\');"
;
if (!mysql_query($sql,$con))
  {

  die('Error: ' . mysql_error());
  }

echo "1 record added";

mysql_close($con);
?>

C2448_uitslagen is mijn database, en result is de tabel.
id is auto increment
Datum is type DATE
en jaar is type YEAR(4)
de rest is type text
 
PHP hulp

PHP hulp

16/11/2024 04:42:14
 
Erwin H

Erwin H

07/12/2012 15:04:45
Quote Anchor link
Duidelijk.... waarom escape je alle single quotes, als je de gehele string in dubbele quotes hebt?
 
Pascal Wetzels

Pascal Wetzels

07/12/2012 15:14:42
Quote Anchor link
dit is zo vanuit phpmyadmin gegenereed, maar als ik de quotes weglaat krijg ik dezelfde melding.
de bedoeling is om dit straks vanuit een invulformulier te doen, maar wil eerst eens de gegevens zo in de tabel krijgen.
wat ik ook probeer, zelfs scripts die op php sql hulp forums / sites staan krijg ik niet aan het werken.
 
Q S

Q S

07/12/2012 15:25:27
Quote Anchor link
Volgens mij kun je bij je insert id weglaten, die is auto increment
Verder alle quotes weghalen die niet nodig zijn en achteraan staat een ; teveel

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$sql
= "INSERT INTO c2448_uitslagen.result (Datum, Show, Jaar, Keurmeester, Klasse, Kleur, Hond, Eigenaar, Uitslag)
VALUES ('2012-12-07', 'test', '2011', 'piere', 'baby', 'rood', 'yellow', 'blue', 'u')"
;
?>
 
Erwin H

Erwin H

07/12/2012 15:28:35
Quote Anchor link
Pascal Wetzels op 07/12/2012 15:14:42:
dit is zo vanuit phpmyadmin gegenereed, maar als ik de quotes weglaat krijg ik dezelfde melding.

Je moet ook niet de quotes weglaten (tenzij het getallen zijn -> INT, FLOAT, DOUBLE, etc), je moet die rare escape slashes weglaten. Die staan daar helemaal nutteloos te wezen.
Gewijzigd op 07/12/2012 15:29:35 door Erwin H
 
Pascal Wetzels

Pascal Wetzels

07/12/2012 15:46:51
Quote Anchor link
Q S op 07/12/2012 15:25:27:
Volgens mij kun je bij je insert id weglaten, die is auto increment
Verder alle quotes weghalen die niet nodig zijn en achteraan staat een ; teveel

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$sql
= "INSERT INTO c2448_uitslagen.result (Datum, Show, Jaar, Keurmeester, Klasse, Kleur, Hond, Eigenaar, Uitslag)
VALUES ('2012-12-07', 'test', '2011', 'piere', 'baby', 'rood', 'yellow', 'blue', 'u')"
;
?>




ook op deze manier, dezelfde foutmelding

@Erwin H

hoe zou het er dan volgens jou moeten uit zien?
 
Erwin H

Erwin H

07/12/2012 15:49:25
Quote Anchor link
Dat zeg ik toch, zonder die rare escape slashes.
 
John D

John D

07/12/2012 15:55:23
Quote Anchor link
phpadmin is enorm pauper, jammer genoeg zijn velen eraan gebonden. MySQL Workbench is een aanrader, helaas wordt dat niet altijd toegestaan door hosters. kopieer nooit al die escape slashes, backticks en quootjes. Tevens gaat het mogelijk fout op het invoeren van de datum.
Gewijzigd op 07/12/2012 16:07:36 door John D
 
Pascal Wetzels

Pascal Wetzels

07/12/2012 16:12:08
Quote Anchor link
@Erwin H

Zoals je had kunnen opmaken uit mijn reactie heb ik die escape slashes verwijderd, maar nog steeds hetzelfde resultaat.
schrijf dan eens de code die ik zou moeten gebruiken volgens jou.
 
Erwin H

Erwin H

07/12/2012 16:16:30
Quote Anchor link
Dan zit er een andere fout in je query... en in je post. Je zegt 'ook op deze manier, dezelfde foutmelding' en dat kan niet. De oorspronkelijke foutmelding stonden namelijk die slashes zeer duidelijk in (zie foutmelding, die begint bij de eerste slash in de query wat dus de oorzaak was van de foutmelding). Je krijgt nu dus een andere foutmelding. Alleen welke, dat kan ik natuurlijk niet gokken, maar dat is wel belangrijk om verder te komen in de oplossing. Graag volledige informatie dus, anders komen we er nooit uit.
 
Pascal Wetzels

Pascal Wetzels

07/12/2012 16:18:19
Quote Anchor link
dit is de foutmelding die ik nu krijg
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 'Show, Jaar, Keurmeester, Klasse, Kleur, Hond, Eigenaar, Uitslag) VALUES ('2011-1' at line 1

zonder de \ maar het princiepe blijft hetzelfde. wat ik er ook invul
 
Erwin H

Erwin H

07/12/2012 16:20:04
Quote Anchor link
Dat is dus duidelijk NIET dezelfde foutmelding. Wat is je volledige query?
 
Pascal Wetzels

Pascal Wetzels

07/12/2012 16:28:17
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$con
= mysql_connect("host","user","password");
if (!$con)
  {

  die('Could not connect: ' . mysql_error());
  }




$sql = "INSERT INTO c2448_uitslagen.result (Datum, Show, Jaar, Keurmeester, Klasse, Kleur, Hond, Eigenaar, Uitslag)
VALUES ('2011-12-07', 'test', '2011', 'piere', 'baby', 'rood', 'yellow', 'blue', '8')"
;
if (!mysql_query($sql,$con))
  {

  die('Error: ' . mysql_error());
  }

echo "1 record added";

mysql_close($con);
?>
 
Erwin H

Erwin H

07/12/2012 16:31:53
Quote Anchor link
http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

'Show' is een reserved word en mag dus niet gebruikt worden voor tabel- of kolomnaam. Deze fout kwam je eerder niet tegen, omdat de (zeer smerige) workaround is om de tabel- en kolomnamen in backticks te zetten. Hoewel dit werkt, is er geen enkele goede reden om het te doen. Vergeet je het namelijk een keer dan ben je direct de klos. Betere oplossing: kolomnaam 'Show' aanpassen en iets anders gebruiken.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.