Waarom werkt INSERT INTO niet?
Ik heb een vraag over het onderstaande php script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
$dbhost = 'mysql8.000webhost.com';
$dbuser = '************';
$dbpass = '************';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql-database');
$dbname = 'a1431118_db';
mysql_select_db($dbname);
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if ($_POST['Toevoegen'])
{
$query="INSERT INTO
'nieuws' (
'Id',
'Datum',
'Bericht',
'Auteur'
)
VALUES
(
NULL,
'".mysql_real_escape_string($_POST['Datum'])."',
'".mysql_real_escape_string($_POST['Bericht'])."',
'".mysql_real_escape_string($_POST['Auteur'])."'
)";
mysql_query($query) or die (mysql_error());
//query uitoefenen
echo "Toegevoegd!";
} elseif ($error) {
?>
<?php echo "error" ?><br><br>
<a href="javascript:history.go(-1)">Ga Terug</a>
<?php
}
}
if (!$_POST['Toevoegen'])
{
?>
<h2>Nieuws toevoegen</h2> <br />
<form method="post" action="">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td>Datum:</td></tr>
<tr><td><input type="text" name="Datum"></td></tr>
<tr><td>Bericht:</td></tr>
<tr><td><input type="text" name="Bericht"></td></tr>
<tr><td>Auteur</td></tr>
<tr><td><input type="text" name="Auteur"></td></tr>
</select></td></tr>
<tr><td>
<input type="Submit" name="Toevoegen" value="Toevoegen">
</td></tr>
</table>
</form>
<?php } ?>
[CODE]
Ik krijg namelijk deze fout als ik op de knop toevoegen klik:
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 ''nieuws' ( 'Id', 'Datum', 'Bericht', 'Auteur' ) VALUES ( NULL, 'test', 'test'' at line 2
Het is de bedoeling dat een gebruiker nieuws kan toevoegen aan de tabel 'nieuws', waarna dat op een andere pagina wordt weergeven. Maar ik snap het niet, want als ik de query echo dan komt er dit:
INSERT INTO 'nieuws' ( 'Id', 'Datum', 'Bericht', 'Auteur' ) VALUES ( NULL, 'test', 'test', 'test' )
En volgens mij is dat goed toch?
$dbhost = 'mysql8.000webhost.com';
$dbuser = '************';
$dbpass = '************';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql-database');
$dbname = 'a1431118_db';
mysql_select_db($dbname);
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if ($_POST['Toevoegen'])
{
$query="INSERT INTO
'nieuws' (
'Id',
'Datum',
'Bericht',
'Auteur'
)
VALUES
(
NULL,
'".mysql_real_escape_string($_POST['Datum'])."',
'".mysql_real_escape_string($_POST['Bericht'])."',
'".mysql_real_escape_string($_POST['Auteur'])."'
)";
mysql_query($query) or die (mysql_error());
//query uitoefenen
echo "Toegevoegd!";
} elseif ($error) {
?>
<?php echo "error" ?><br><br>
<a href="javascript:history.go(-1)">Ga Terug</a>
<?php
}
}
if (!$_POST['Toevoegen'])
{
?>
<h2>Nieuws toevoegen</h2> <br />
<form method="post" action="">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td>Datum:</td></tr>
<tr><td><input type="text" name="Datum"></td></tr>
<tr><td>Bericht:</td></tr>
<tr><td><input type="text" name="Bericht"></td></tr>
<tr><td>Auteur</td></tr>
<tr><td><input type="text" name="Auteur"></td></tr>
</select></td></tr>
<tr><td>
<input type="Submit" name="Toevoegen" value="Toevoegen">
</td></tr>
</table>
</form>
<?php } ?>
[CODE]
Ik krijg namelijk deze fout als ik op de knop toevoegen klik:
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 ''nieuws' ( 'Id', 'Datum', 'Bericht', 'Auteur' ) VALUES ( NULL, 'test', 'test'' at line 2
Het is de bedoeling dat een gebruiker nieuws kan toevoegen aan de tabel 'nieuws', waarna dat op een andere pagina wordt weergeven. Maar ik snap het niet, want als ik de query echo dan komt er dit:
INSERT INTO 'nieuws' ( 'Id', 'Datum', 'Bericht', 'Auteur' ) VALUES ( NULL, 'test', 'test', 'test' )
En volgens mij is dat goed toch?
Gewijzigd op 04/07/2011 16:44:11 door Stijn Achternaam
Als je quotes om een kolom- of veldnaam zet dan wordt het gezien als tekst. Dus quotes weghalen.
Wat op zich wel logisch is, want het is de primary key, maar het is de bedoeling dat id automatisch wordt ingevuld naar het volgende nummer.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
$datum = mysql_real_escape_string($_GET['datum']);
$bericht= mysql_real_escape_string($_GET['datum']);
$auteur= mysql_real_escape_string($_GET['auteur']);
$query = 'insert into nieuws (datum, bericht, auteur)values("'.$datum.'","'.$bericht.'","'.$auteur.'")';
?>
$datum = mysql_real_escape_string($_GET['datum']);
$bericht= mysql_real_escape_string($_GET['datum']);
$auteur= mysql_real_escape_string($_GET['auteur']);
$query = 'insert into nieuws (datum, bericht, auteur)values("'.$datum.'","'.$bericht.'","'.$auteur.'")';
?>
Dat zou moeten werken. mySQL vult 'id' zelf al in, mits goed ingesteld (auto increment, AI).
Gewijzigd op 04/07/2011 17:03:28 door Kevin Ellen
Bedankt! Het werkt nu zoals ik wil :)
Succes verder!
Kevin Ellen op 04/07/2011 17:00:41:
Gebruik geen shorttags. Denk dat bovenstaande code ook iets te veel copy/paste is geweest (gezien de variabele naam en de get...).
Maak variabelen bij voorkeur alleen aan als het nodig is. Kevin is met deze code druk bezig om 3 variabelen extra aan te maken, zonder enige toegevoegde waarde.
Gewijzigd op 04/07/2011 18:45:16 door Obelix Idefix
Obelix en Idefix op 04/07/2011 18:35:53:
Mja, ik had de code even snel copy/paste omdat ik vrij weinig zin had om 3 keer bijna hetzelfde te typen. En ik had deze variabelen inderdaad niet hoeven aan te maken. Ook de datum zou je gemakkelijk kunnen doen zonder GET. [...]
Gebruik geen shorttags. Denk dat bovenstaande code ook iets te veel copy/paste is geweest (gezien de variabele naam en de get...).
Maak variabelen bij voorkeur alleen aan als het nodig is. Kevin is met deze code druk bezig om 3 variabelen extra aan te maken, zonder enige toegevoegde waarde.
Gebruik geen shorttags. Denk dat bovenstaande code ook iets te veel copy/paste is geweest (gezien de variabele naam en de get...).
Maak variabelen bij voorkeur alleen aan als het nodig is. Kevin is met deze code druk bezig om 3 variabelen extra aan te maken, zonder enige toegevoegde waarde.
is de datum in YYYY-mm-dd.
@Kevin: Maar nergens blijkt dat het gaat om de datum van vandaag, dus of date() gebruikt kan worden, is mij niet bekend.
Obelix en Idefix op 04/07/2011 18:35:53:
Gebruik geen shorttags. Denk dat bovenstaande code ook iets te veel copy/paste is geweest (gezien de variabele naam en de get...).
Maak variabelen bij voorkeur alleen aan als het nodig is. Kevin is met deze code druk bezig om 3 variabelen extra aan te maken, zonder enige toegevoegde waarde.
Kevin Ellen op 04/07/2011 17:00:41:
Gebruik geen shorttags. Denk dat bovenstaande code ook iets te veel copy/paste is geweest (gezien de variabele naam en de get...).
Maak variabelen bij voorkeur alleen aan als het nodig is. Kevin is met deze code druk bezig om 3 variabelen extra aan te maken, zonder enige toegevoegde waarde.
Hier heeft het wel de voorkeur om variabelen aan te maken, aangezien je dan zo weet dat deze variabele veilig is om te gebruiken.
Kevin Ellen op 04/07/2011 18:41:34:
is de datum in YYYY-mm-dd.
Obelix en Idefix op 04/07/2011 18:35:53:
Mja, ik had de code even snel copy/paste omdat ik vrij weinig zin had om 3 keer bijna hetzelfde te typen. En ik had deze variabelen inderdaad niet hoeven aan te maken. Ook de datum zou je gemakkelijk kunnen doen zonder GET. [...]
Gebruik geen shorttags. Denk dat bovenstaande code ook iets te veel copy/paste is geweest (gezien de variabele naam en de get...).
Maak variabelen bij voorkeur alleen aan als het nodig is. Kevin is met deze code druk bezig om 3 variabelen extra aan te maken, zonder enige toegevoegde waarde.
Gebruik geen shorttags. Denk dat bovenstaande code ook iets te veel copy/paste is geweest (gezien de variabele naam en de get...).
Maak variabelen bij voorkeur alleen aan als het nodig is. Kevin is met deze code druk bezig om 3 variabelen extra aan te maken, zonder enige toegevoegde waarde.
is de datum in YYYY-mm-dd.
Je gebruikt ook geen date, maar gewoon mysql date and time functions zoals NOW()