MySQLi insert en update

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tortuga web

tortuga web

09/06/2014 20:11:40
Quote Anchor link
Hallo,
Ik heb een formulier gemaakt, waar de gegevens ingezet worden die uit de database komen, om deze gegevens vervolgens te updaten. Dit werkt allemaal als een tierelier en geen problemen.
Nu heb ik daarna een vrijwel gelijksoortig formulier gemaakt, om nieuwe gegevens in de tabel te zetten, dus een mysqli_insert.
Nu gebeurt er iets heel raars. Want ik krijg de foutmelding 'undefined id', die in de tabel gewoon op auto_increment en primary staat, dus automatisch het volgende nummer zou moeten worden. Bij een serie van de laatste checks of alles goed gaat, heb ik verschillende redirects gezet, afhankelijk van het type foutmelding. De redirects heb ik op voldoende tijd staan (header(refresh:15;blabla.php)) om te zien wat de foutmelding is. Nu bleek de verhoging van de tijd van de refresh geen effect te hebben, dus dat was raar.
Toen heb ik ontdekt, dat de redirect gebruikt wordt van het update-script, en niet van het insert script. Dus voordat de nieuwe row wordt toegevoegd in de dBase, gaat het script verder vanuit de update-file.
In een poging alles uit te schakelen, heb ik de cache van de browser volledig opgeschoond, heb ik aan het eind van het script mysqli_close toegevoegd, en nou weet ik het niet meer. De variabelen hebben niet dezelfde naam: $sql_insert en $result = mysqli_query($link, $sql_insert); voor het insertscript en $sql_update en $result = mysqli_query($link, $sql_update); voor het updatescript.
Dus mijn vraag: Hoe kan het ene script nou zomaar verder gaan met een script van een ander bestand, en enig idee hoe dit op te lossen?
Gewijzigd op 09/06/2014 20:18:30 door Tortuga web
 
PHP hulp

PHP hulp

22/11/2024 04:19:25
 
Peter  Flos

Peter Flos

09/06/2014 20:47:14
Quote Anchor link
Hoe ziet het script eruit?
 
Tortuga web

tortuga web

09/06/2014 21:04:24
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
//Make the query
   $sql_insert = sprintf("INSERT INTO socios(nombre,apellidos, dni, nacido,   domicilio,cp,poblacion,    provincia, fijo, movil, email, pass)
VALUES ('$nombre', '$apellidos', '$dni', '$nacido', '$domicilio', '$cp', $poblacion,'$provincia', '$fijo', '$movil', '$email', '$pass')");
    //Send the insert-query                
    $result = mysqli_query($link, $sql_insert);
    //Check if it is send right
    if ($result === false) {
        header( 'Refresh: 13; url=register_form.php' );
        echo '<p>Could not update news item!
        <br />Database returned: ' . mysqli_error( $link ) . '
        <br />Query was: ' . $sql_insert() . '</p>';
        exit();
    }
    else {
            $id = mysql_insert_id();
        header( 'Refresh: 15; url=socio.php' );
        exit();
    }
        mysqli_close($link);

Dit is het stuk uit het insert-script
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
$sql_update = ("UPDATE socios
    SET
    nombre = '$nombre',
    apellidos = '$apellidos',
    dni = '$dni',
    socio = '$socio',
    nacido = '$nacido',
    domicilio = '$domicilio',
    cp = '$cp',
    poblacion = '$poblacion',
    provincia = '$provincia',
    fijo = '$fijo',
    movil = '$movil',
    email = '$email',
    pass = '$pass'
    WHERE
    id = '$id'");
    //Send the update-query                
    $result = mysqli_query($link, $sql_update);
    //Check if it is send right
        if ($result === false) {
            header( 'Refresh: 3; url=register_change_form.php' );
            echo '<p>Could not update news item!
            <br />Database returned: ' . mysqli_error( $link ) . '
            <br />Query was: ' . $sql_update() . '</p>';
            exit();
        }
        else {
            header( 'Refresh: 10; url=all_socios.php' );
            exit();
        }
mysqli_close($link);

Dit is uit het update-script.
Zoals je ziet, zijn alle redirect verschillend, vandaar dat ik weet dat het script van bestand switched.
 
- Ariën  -
Beheerder

- Ariën -

09/06/2014 21:16:12
Quote Anchor link
$sql_insert() ==> Waarom die haakjes erachter?
Waar komen de variabelen uit je query vandaan? Zoals: $id, $nombre, $apellidos etc, en bescherm je die ook tegen SQL-injection?
 
Tortuga web

tortuga web

09/06/2014 21:21:08
Quote Anchor link
Ja, gebeurt allemaal eerst, en dat is een lang script, dus daar wil ik jullie niet mee lastig vallen. De data komt uit de dBase (het update-script) en/of uit een formulier (het insert-script) en moet bewerkt om weer in de dBase te stoppen, vandaar dat de variabelen uit de $_POST omgezet worden in $var.
De haakjes hoeven niet, maar doen ook geen kwaad.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/06/2014 21:38:11
Quote Anchor link
De haakjes zijn niet nodig, dus gewoon weglaten. Het maakt dat de SQL parser meer moet 'nadenken'.

Maar zeer waarschijnlijk gaat het ergens anders in je script fout, misschien een verkeerde form action?
 
Tortuga web

tortuga web

09/06/2014 21:42:36
Quote Anchor link
Natuurlijk! Wat een blunder. Dank je Ger, dat is de fout.

Ik heb het nu allemaal perfect aan de praat.
Gewijzigd op 09/06/2014 21:56:21 door tortuga web
 



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.