probleem met update naar datebase

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Niek Kasius

Niek Kasius

05/04/2014 01:56:03
Quote Anchor link
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
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
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'
;
?>

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
 
PHP hulp

PHP hulp

19/04/2024 10:01:02
 
Obelix Idefix

Obelix Idefix

05/04/2014 08:35:51
Quote Anchor link
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?
 
- Ariën  -
Beheerder

- Ariën -

05/04/2014 08:54:02
Quote Anchor link
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()
 
Ivo P

Ivo P

05/04/2014 10:55:46
Quote Anchor link
En los van het gevaar op manipulatie: ook een simpele, terechte ' in je invoer kan dan geem kwaad meer
 
Niek Kasius

Niek Kasius

06/04/2014 06:36:48
Quote Anchor link
Is opgelost heb afbeelding='".mysqli_real_escape_string($con,$_POST['afbeelding'])."', enz, enz gedaan en nu werk het wel.
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?

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
 
Niek Kasius

Niek Kasius

30/04/2014 19:00:58
Quote Anchor link
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

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
<?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");
    }

?>
 
- Ariën  -
Beheerder

- Ariën -

30/04/2014 19:16:35
Quote Anchor link
Je verwardt INSERT met UPDATE.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE berichten SET dit='dat', zus='zo' WHERE iets='dat'
Gewijzigd op 30/04/2014 19:16:49 door - Ariën -
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/04/2014 20:09:28
Quote Anchor link
Andersom kan het trouwens wel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO berichten SET dit='dat', zus='zo'
 
Niek Kasius

Niek Kasius

01/05/2014 02:08:45
Quote Anchor link
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
 
Ivo P

Ivo P

01/05/2014 07:17:47
Quote Anchor link
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.
 
Erwin H

Erwin H

01/05/2014 10:13:46
Quote Anchor link
Dat het regel 1 aangeeft is niet vreemd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 = ...

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
 
Niek Kasius

Niek Kasius

01/05/2014 16:01:30
Quote Anchor link
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
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
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=&amp;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)
PHP script in nieuw venster Selecteer het PHP script
1
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));
?>
Gewijzigd op 01/05/2014 16:02:47 door Niek Kasius
 
Ivo P

Ivo P

01/05/2014 16:11:53
Quote Anchor link
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
 
Niek Kasius

Niek Kasius

01/05/2014 18:38:04
Quote Anchor link
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
Gewijzigd op 01/05/2014 18:41:38 door Niek Kasius
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

01/05/2014 18:42:14
Quote Anchor link
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.
 
Niek Kasius

Niek Kasius

03/05/2014 03:26:56
Quote Anchor link
Ik snap het nog steeds niet het niet werkt.
ik heb dit in post.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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()) "
);
                            }

                            ?>

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
 
Ivo P

Ivo P

03/05/2014 07:33:23
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
Update bericbten
Set wijzjgen = NOW(),
    kolom= 'abc'
WHERE id ='123'
 
Niek Kasius

Niek Kasius

03/05/2014 16:51:57
Quote Anchor link
Okee
bedankt
 



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.