een rij updaten in form

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sanne Zuidema

Sanne Zuidema

08/11/2013 14:53:24
Quote Anchor link
hallo,
ik wil graag mijn database updaten vanuit een formulier. ik wil dat je een rij kan aanpassen. hieronder mijnformulier:
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
 
$link
= mysqli_connect("localhost", "root", "", "update") or die ("error");
//var_dump($link); test

$res = mysqli_query($link, "select * from user");

while ($row = mysqli_fetch_assoc($res))
        {

            echo "<form action ='handleupdate.php' method='POST'>";
            echo "<input name='id' value='".$row['id']."'>
            <input name='firstname' value='"
.$row['firstname']."'>
            <input name='lastname' value='"
.$row['lastname']."'>
            <input name='username' value='"
.$row['username']."'>
            <input name='email' value='"
.$row['email']."'>";
            echo "<input type='submit' value='send'><br/>";
            echo "</form>";
            
        }

?>


Hier mijn update query:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
require ('connect.php');

$id= $_POST['id'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$username = $_POST['username'];
$email = $_POST['email'];

mysql_query("UPDATE 'user' SET firstname = $firstname, lastname = $lastname, username = $username, email = $email WHERE id='$id'");

?>


Wie kan mij helpen
 
PHP hulp

PHP hulp

28/11/2024 04:31:01
 
- Ariën  -
Beheerder

- Ariën -

08/11/2013 14:59:36
Quote Anchor link
Ten eerste:
Waarom heb je lijn 4 t/m 8. Deze varaiebelen kan je toch al direct in je query gebruiken?

Verder horen de waardes die je wilt invoegen tussen single-quotes te staan. En verder omdat het variabelen zijn moeten deze ook nog eens het liefst buiten de qouble quotes worden gezet.

Los daarvan zie ik ook een groot veiligheidsrisico. Iedereen kan nu je query manupuleren omdat je niet controleert op de invoer van je $_POST-waardes. Gebruik dus mysqli_real_escape_string

En als laatste wil je je even contronteren dat als je mysqli gebruikt, ook expliciet mysqli moet gebruiken, en dus geen mysql_query(), waar dus de 'i' in ontbreekt.
 
Sanne Zuidema

Sanne Zuidema

08/11/2013 15:12:16
Quote Anchor link
bedankt voor je antwoord, ik ben nog niet heel erg thuis in mysql/php. Dit is voor een schoolproject. Ik wil alleen graag weten hoe ik een rij geupdate krijg ipv dat hij alle rijen update. Alleen die code wil ik graag weten, want op het internet kom ik er niet uit.

Met WHERE kan je een update beperken tot een rij/record, maar die zit er al in.
Gewijzigd op 08/11/2013 15:17:09 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

08/11/2013 15:15:02
Quote Anchor link
Heb je mijn bericht al gelezen? Wat er zitten toch best wel wat onvolkomenheden in de weg.
 
Sanne Zuidema

Sanne Zuidema

08/11/2013 15:18:25
Quote Anchor link
ja ik had je bericht gelezen. Is dit beter?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
require ('connect.php');

mysqli_query("UPDATE 'user' SET firstname = "'$firstname'", lastname = "'$lastname'", username = "'$username'", email = "'$email'" WHERE id="'$id'"");

?>


Of heb ik het verkeerd begrepen
 
- Ariën  -
Beheerder

- Ariën -

08/11/2013 15:30:17
Quote Anchor link
Bijna...
Zullen we dan de rest van de punten ook maar meenemen, en de boel duidelijker schrijven.
Dan weet je precies in een oogopslag wat er gebeurt.
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
<?php
$result
= mysqli_query("
UPDATE
    user
SET
    firstname = '"
.mysqli_real_escape_string($_POST['firstname'])."',
    lastname = '"
.mysqli_real_escape_string($_POST['lastname'])."',
    username = '"
.mysqli_real_escape_string($_POST['username'])."'
WHERE
    id= '"
.mysqli_real_escape_string($_POST['id'])."'
"
);
if($result) {
// gelukt
} else {
 //  mislukt, toon iets als mysqli_error()
}
?>
Gewijzigd op 08/11/2013 15:31:29 door - Ariën -
 
Sanne Zuidema

Sanne Zuidema

08/11/2013 15:39:55
Quote Anchor link
ik snap het principe hij geeft alleen de foutmelding:
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given
 
- Ariën  -
Beheerder

- Ariën -

08/11/2013 15:48:32
Quote Anchor link
Je moet in de eerste parameter de variabele aangeven van je connectie. De tweede is de inhoud die je wilt controleren.
 



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.