een rij updaten in form
ik wil graag mijn database updaten vanuit een formulier. ik wil dat je een rij kan aanpassen. hieronder mijnformulier:
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
$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>";
}
?>
$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)
1
2
3
4
5
6
7
8
9
10
11
12
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'");
?>
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
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.
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 -
Heb je mijn bericht al gelezen? Wat er zitten toch best wel wat onvolkomenheden in de weg.
Code (php)
1
2
3
4
5
6
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'"");
?>
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
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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()
}
?>
$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 -
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given
Je moet in de eerste parameter de variabele aangeven van je connectie. De tweede is de inhoud die je wilt controleren.