probleem met update naar datebase
Als ik mijn database wil veranderen krijg ik in edite_speler.php deze foutmelding:
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 'Joep', achternaam='van kaahei', ' at line 2.
dit is hier regel 4
in de database staat d' Joep.
En als ik die ' weg haal werkt het wel
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 'Joep', achternaam='van kaahei', ' at line 2.
dit is hier regel 4
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$query = "UPDATE spelers SET afbeelding='".$_POST['afbeelding']."',
voornaam='".$_POST['voornaam']."',
achternaam='".$_POST['achternaam']."',
gebdatum='".$_POST['gebdatum']."',
straat='".$_POST['straat']."',
huisnr='".$_POST['huisnr']."',
postcode='".$_POST['postcode']."',
plaats='".$_POST['plaats']."',
telefoon='".$_POST['telefoon']."',
email='".$_POST['email']."',
club='".$_POST['club']."',
caramboles='".$_POST['caramboles']."',
moyenne='".$_POST['moyenne']."',
hoogste='".$_POST['hoogste']."'
WHERE id='".$_GET['id']."'";
mysqli_query($con,$query) or die(mysqli_error($con));
echo '<h4>De wedstrijd is gewijzigd</h4>
Klik <a href="index.php">HIER</a> om terug te gaan';
?>
$query = "UPDATE spelers SET afbeelding='".$_POST['afbeelding']."',
voornaam='".$_POST['voornaam']."',
achternaam='".$_POST['achternaam']."',
gebdatum='".$_POST['gebdatum']."',
straat='".$_POST['straat']."',
huisnr='".$_POST['huisnr']."',
postcode='".$_POST['postcode']."',
plaats='".$_POST['plaats']."',
telefoon='".$_POST['telefoon']."',
email='".$_POST['email']."',
club='".$_POST['club']."',
caramboles='".$_POST['caramboles']."',
moyenne='".$_POST['moyenne']."',
hoogste='".$_POST['hoogste']."'
WHERE id='".$_GET['id']."'";
mysqli_query($con,$query) or die(mysqli_error($con));
echo '<h4>De wedstrijd is gewijzigd</h4>
Klik <a href="index.php">HIER</a> om terug te gaan';
?>
in de database staat d' Joep.
En als ik die ' weg haal werkt het wel
Gewijzigd op 05/04/2014 02:13:10 door Niek Kasius
Is je nog nooit verteld dat je de input moet beveiligen?
$_POST en $_GET in 1 formulier?
Is het niet standaard dat je als method kiest voor get of post?
$_POST en $_GET in 1 formulier?
Is het niet standaard dat je als method kiest voor get of post?
Obelix en Idefix op 05/04/2014 08:35:51:
Is je nog nooit verteld dat je de input moet beveiligen?
Yes, hier op mijn werkkamer gaan nu de zwaailichten en sirenes af omdat er hier sprake is van een mogelijkheid tot SQL-injection. Iedereen kan je query manipuleren met kwalijke gevolgen....
Beveilig daarom je $_POST (en $_GET en $_COOKIE) gegevens mysql_real_escape_string()
En los van het gevaar op manipulatie: ook een simpele, terechte ' in je invoer kan dan geem kwaad meer
Is opgelost heb afbeelding='".mysqli_real_escape_string($con,$_POST['afbeelding'])."', enz, enz gedaan en nu werk het wel.
Dus
WHERE id heb ik niet nodig blijkbaar, want ik het nu heb geprobeerd zonder en dat werkt.
Bij het posten en bewerken heb ik wel mysqli_real_escape_string staan, maar dat het in edite ook moest had ik geen id van.
Maar nu werkt het goed.
Bedankt allemaal
Quote:
Is je nog nooit verteld dat je de input moet beveiligen?
$_POST en $_GET in 1 formulier?
Is het niet standaard dat je als method kiest voor get of post?
$_POST en $_GET in 1 formulier?
Is het niet standaard dat je als method kiest voor get of post?
Dus
WHERE id heb ik niet nodig blijkbaar, want ik het nu heb geprobeerd zonder en dat werkt.
Bij het posten en bewerken heb ik wel mysqli_real_escape_string staan, maar dat het in edite ook moest had ik geen id van.
Maar nu werkt het goed.
Bedankt allemaal
Ik heb nog steeds een probleem met een update.
Ik heb dat zelfde script nu gekopieerd om het te gebruiken in mijn gastenboek, Natuurlijk wel alles aan gepast en dat werkt wel Alleen niet wat ik wil de datum voeg die automatisch toe met NOW() dat is geen probleem, Maar ik heb in de database een veld toegevoegd genaamd wijzig_datum.
En nu wil dat niet lukken.
Krijg een dit in editen.php.
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 ' email, bericht, ' at line 1
Ik heb dat zelfde script nu gekopieerd om het te gebruiken in mijn gastenboek, Natuurlijk wel alles aan gepast en dat werkt wel Alleen niet wat ik wil de datum voeg die automatisch toe met NOW() dat is geen probleem, Maar ik heb in de database een veld toegevoegd genaamd wijzig_datum.
En nu wil dat niet lukken.
Krijg een dit in editen.php.
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 ' email, bericht, ' at line 1
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$query = "UPDATE berichten SET naam,
email,
bericht,
wijzig_datum
VALUES '".mysqli_real_escape_string($con,$_POST['naam'])."',
'".mysqli_real_escape_string($con,$_POST['email'])."',
'".mysqli_real_escape_string($con,$_POST['bericht'])."',
NOW()";
mysqli_query($con,$sql) or die(mysqli_error($con));
{
echo '<h4>Het bericht is gewijzigd, je word nu terug gestuurd</h4>'; header("Refresh: 2; URL=index.php");
}
?>
$query = "UPDATE berichten SET naam,
email,
bericht,
wijzig_datum
VALUES '".mysqli_real_escape_string($con,$_POST['naam'])."',
'".mysqli_real_escape_string($con,$_POST['email'])."',
'".mysqli_real_escape_string($con,$_POST['bericht'])."',
NOW()";
mysqli_query($con,$sql) or die(mysqli_error($con));
{
echo '<h4>Het bericht is gewijzigd, je word nu terug gestuurd</h4>'; header("Refresh: 2; URL=index.php");
}
?>
het zijn 2 scripts om die berichten te bewerken wizigen.php en editen.php
En in wijzigen zit de INSERT INTO en die gaat via de form naar editen.php waar die de UPDATE uitvoerd, En dat werk asl ik die wijzig_datum en NOW weg laat.
Ik heb die VALUES ook al weg gelaten maar het werkt niet.
het werkt wel als de wijzig_datum handmatg invoer via de form.
dus het moet aan NOW() liggen
En in wijzigen zit de INSERT INTO en die gaat via de form naar editen.php waar die de UPDATE uitvoerd, En dat werk asl ik die wijzig_datum en NOW weg laat.
Ik heb die VALUES ook al weg gelaten maar het werkt niet.
het werkt wel als de wijzig_datum handmatg invoer via de form.
dus het moet aan NOW() liggen
De foutmelding zegt precies waar de pijn zit: nabij ",email" op regel 1.
vreemd genoeg is dat regel 2 van jouw query. Maar zoals Aar aangeeft: de syntax van een update query is anders dan wat jij probeert.
vreemd genoeg is dat regel 2 van jouw query. Maar zoals Aar aangeeft: de syntax van een update query is anders dan wat jij probeert.
Dat het regel 1 aangeeft is niet vreemd:
Na naam moet dus een waarde komen voor die kolom en aangezien die waarde ontbreekt geeft de parser daar al een foutmelding. De fout zit dus op regel 1 al (de komma staat op regel 1).
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
//wat hij heeft
UPDATE berichten SET naam,
email,
bericht,
...
//wat hij zou moeten hebben
UPDATE berichten
SET naam = ...., email = ...
UPDATE berichten SET naam,
email,
bericht,
...
//wat hij zou moeten hebben
UPDATE berichten
SET naam = ...., email = ...
Na naam moet dus een waarde komen voor die kolom en aangezien die waarde ontbreekt geeft de parser daar al een foutmelding. De fout zit dus op regel 1 al (de komma staat op regel 1).
Gewijzigd op 01/05/2014 10:14:00 door Erwin H
nou ik krijg het niet voor elkaar, ik heb al een tig aantal dingen gepropeerd,
Zoals onderander de wijzig_datum veranderd in wijzigen (ja ook in de database) en naam = 'naam', enz, enz.
Maar het werkt niet met NOW(). Ik kan natuurlijk die wijzig datum ook weg laten, alleen weet je dan niet meer wanneer iets gewijzigd is
Dus heb ik het maar zo gedaan:
dit is wijzigen.php
en dit in editen.php
Zoals onderander de wijzig_datum veranderd in wijzigen (ja ook in de database) en naam = 'naam', enz, enz.
Maar het werkt niet met NOW(). Ik kan natuurlijk die wijzig datum ook weg laten, alleen weet je dan niet meer wanneer iets gewijzigd is
Dus heb ik het maar zo gedaan:
dit is wijzigen.php
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
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
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($_POST['naam']) ||
empty($_POST['email']) ||
empty($_POST['bericht']) ||
empty($_POST['wijzigen']))
{
echo '<H1>Error!!!!!</h1><h3>Je hebt een of meerdere velden ingevuld!</h3>';
}
else
{
mysqli_query($con,"INSERT INTO berichten (id,
naam = 'naam',
email = 'email',
bericht = 'bericht',
wijzigen = 'wijzigen'
)
VALUES (''
naam='".mysqli_real_escape_string($con,$_POST['naam'])."',
email='".mysqli_real_escape_string($con,$_POST['email'])."',
bericht='".mysqli_real_escape_string($con,$_POST['bericht'])."',
wijzigen='".mysqli_real_escape_string($con,$_POST['wijzigen'])."'
WHERE id='".mysqli_real_escape_string($con, $_GET['id'])."')");
}
}else
{
$query = mysqli_query($con,"select naam, email, bericht, wijzigen FROM berichten WHERE id='".mysqli_real_escape_string($con, $_GET['id'])."'");
while($log = mysqli_fetch_object($query)){
?>
<div id="content">
<center>
<div id="poster">
<form method="POST" action="editen.php?actie=&id=<?=(int)$_GET['id'];?>" name="form">
<div class="screen">
<div class="row">
<label>Naam:</label>
<input type="text" name="naam" value="<?php echo"$log->naam"; ?> size="40" maxlength="60">
</div>
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($_POST['naam']) ||
empty($_POST['email']) ||
empty($_POST['bericht']) ||
empty($_POST['wijzigen']))
{
echo '<H1>Error!!!!!</h1><h3>Je hebt een of meerdere velden ingevuld!</h3>';
}
else
{
mysqli_query($con,"INSERT INTO berichten (id,
naam = 'naam',
email = 'email',
bericht = 'bericht',
wijzigen = 'wijzigen'
)
VALUES (''
naam='".mysqli_real_escape_string($con,$_POST['naam'])."',
email='".mysqli_real_escape_string($con,$_POST['email'])."',
bericht='".mysqli_real_escape_string($con,$_POST['bericht'])."',
wijzigen='".mysqli_real_escape_string($con,$_POST['wijzigen'])."'
WHERE id='".mysqli_real_escape_string($con, $_GET['id'])."')");
}
}else
{
$query = mysqli_query($con,"select naam, email, bericht, wijzigen FROM berichten WHERE id='".mysqli_real_escape_string($con, $_GET['id'])."'");
while($log = mysqli_fetch_object($query)){
?>
<div id="content">
<center>
<div id="poster">
<form method="POST" action="editen.php?actie=&id=<?=(int)$_GET['id'];?>" name="form">
<div class="screen">
<div class="row">
<label>Naam:</label>
<input type="text" name="naam" value="<?php echo"$log->naam"; ?> size="40" maxlength="60">
</div>
en dit in editen.php
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$query = "UPDATE berichten SET naam='".mysqli_real_escape_string($con,$_POST['naam'])."',
email='".mysqli_real_escape_string($con,$_POST['email'])."',
bericht='".mysqli_real_escape_string($con,$_POST['bericht'])."',
wijzigen='".mysqli_real_escape_string($con,$_POST['wijzigen'])."'
WHERE id='".mysqli_real_escape_string($con, $_GET['id'])."'";
mysqli_query($con,$query) or die(mysqli_error($con));
?>
$query = "UPDATE berichten SET naam='".mysqli_real_escape_string($con,$_POST['naam'])."',
email='".mysqli_real_escape_string($con,$_POST['email'])."',
bericht='".mysqli_real_escape_string($con,$_POST['bericht'])."',
wijzigen='".mysqli_real_escape_string($con,$_POST['wijzigen'])."'
WHERE id='".mysqli_real_escape_string($con, $_GET['id'])."'";
mysqli_query($con,$query) or die(mysqli_error($con));
?>
Gewijzigd op 01/05/2014 16:02:47 door Niek Kasius
op regel 14: dat begint als een insert query.
met dan in de opsomming van de kolommen ineens een stel values
en dan toch weer een VALUES () stuk
Met als klap op de vuurpijl een WHERE (in een insert query!!)
De update query uit het laatste blok ziet er wel aardig uit
met dan in de opsomming van de kolommen ineens een stel values
en dan toch weer een VALUES () stuk
Met als klap op de vuurpijl een WHERE (in een insert query!!)
De update query uit het laatste blok ziet er wel aardig uit
er staat maar een VALUES stuk, EN WHERE heb ik er al uit gehaald in wijzigen.php, Maar in de editen moet die wel in anders wijzigt die alle namen, emailadressen en berichten in de database.
En in editen zou ik ook een VALUES moeten hebben met SET naam = 'naam' enz, enz er voor omdat NOW() anders niet weet waar die voor dient
En als ik regel 5 verander in NOW() krijg ik een syntax error
En in editen zou ik ook een VALUES moeten hebben met SET naam = 'naam' enz, enz er voor omdat NOW() anders niet weet waar die voor dient
En als ik regel 5 verander in NOW() krijg ik een syntax error
Gewijzigd op 01/05/2014 18:41:38 door Niek Kasius
Ga eerst je maar eens verdiepen in SQL syntax:
https://dev.mysql.com/doc/refman/5.5/en/update.html
en
https://dev.mysql.com/doc/refman/5.5/en/insert.html
Want er klopt echt geen reet van wat je allemaal doet.
https://dev.mysql.com/doc/refman/5.5/en/update.html
en
https://dev.mysql.com/doc/refman/5.5/en/insert.html
Want er klopt echt geen reet van wat je allemaal doet.
Ik snap het nog steeds niet het niet werkt.
ik heb dit in post.php
En daar zet die gewoon de datum van invoer in de database, En dat zelfde staat ook in wijzigen.php met dat verschil dat het naam "datum" is veranderd in "wijzigen" zonder die dubbel aanhalingsteken wel te verstaan, en die heb ik wijzigen ook in de database toegevoegd met datetime.
Dus zou dat toch moeten werken. maar zodra ik NOW() ook in de editen.php zet gaat het fout
ik heb dit in post.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
mysqli_query($con,"INSERT INTO berichten (id,
naam,
email,
bericht,
datum)
VALUES ('',
'".mysqli_real_escape_string($con,$_POS['naam'])."',
'".mysqli_real_escape_string($con,$_POST['email'])."',
'".mysqli_real_escape_string($con,$_POST['bericht'])."',
NOW()) ");
}
?>
mysqli_query($con,"INSERT INTO berichten (id,
naam,
email,
bericht,
datum)
VALUES ('',
'".mysqli_real_escape_string($con,$_POS['naam'])."',
'".mysqli_real_escape_string($con,$_POST['email'])."',
'".mysqli_real_escape_string($con,$_POST['bericht'])."',
NOW()) ");
}
?>
En daar zet die gewoon de datum van invoer in de database, En dat zelfde staat ook in wijzigen.php met dat verschil dat het naam "datum" is veranderd in "wijzigen" zonder die dubbel aanhalingsteken wel te verstaan, en die heb ik wijzigen ook in de database toegevoegd met datetime.
Dus zou dat toch moeten werken. maar zodra ik NOW() ook in de editen.php zet gaat het fout
Okee
bedankt
bedankt




