foutmelding bij insert into
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
?>
$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
Duidelijk.... waarom escape je alle single quotes, als je de gehele string in dubbele quotes hebt?
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.
Verder alle quotes weghalen die niet nodig zijn en achteraan staat een ; teveel
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
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
Verder alle quotes weghalen die niet nodig zijn en achteraan staat een ; teveel
Code (php)
1
2
3
4
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')";
?>
$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?
Dat zeg ik toch, zonder die rare escape slashes.
Gewijzigd op 07/12/2012 16:07:36 door John D
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.
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.
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
Dat is dus duidelijk NIET dezelfde foutmelding. Wat is je volledige query?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
?>
$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);
?>
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.
'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.