Twee Prepared statements in één .php-bestand waarvan insert niet lukt
Beste forumhelper, bezoeker,
Dank u voor de handige boeken die u schrijft, alsmede uw aanwezigheid op dit forum. Ik heb een vraag die zelden voorkomt ivm prepared statements and sqlinjectie en die onvindbaar is in welk boek dan ook.
In mijn php-bestand met form action=""
werkt het gedeelte insert niet. Wat is de reden?
FORM gedeelte staat hier
Nu, voorlopig gecombineerd met deze insert-code werkt het perfect:
Kan iemand mij adviseren?
Vriendelijk groet,
Lowie.
Dank u voor de handige boeken die u schrijft, alsmede uw aanwezigheid op dit forum. Ik heb een vraag die zelden voorkomt ivm prepared statements and sqlinjectie en die onvindbaar is in welk boek dan ook.
In mijn php-bestand met form action=""
werkt het gedeelte insert niet. Wat is de reden?
FORM gedeelte staat hier
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
// INSERT gedeelte hier
if(isset($_POST['VOU'])){
$con_db=new mysqli($host, $user, $code, $db);
mysqli_set_charset($con_db,"utf8");
if($mysqli->connect_error){
echo '<br /><div id="errmsg">';
echo $openErr;
echo '</div>';
header('Location: getuigenis.php');
exit(0);
}
// Prepare an insert statement
if($stmnt=$con_db->prepare("INSERT INTO opinies (voucher, naam, email, bericht) VALUES (?, ?, ?, ?)")){
mysqli_set_charset($con_db,"utf8");
$stmnt->bind_param('ssss', $_POST['VOU'],$_POST['NME'],$_POST['EML'],$_POST['TXT']);
$stmnt->execute();
$stmnt->close();
$con_db->close();
}else{
$stmnt->close();
$con_db->close();
header('Location: getuigenis.php');
exit(0);
}
}
// SELECT gedeelte erna
$con_db=new mysqli($host, $user, $code, $db);
mysqli_set_charset($con_db,"utf8");
if($mysqli->connect_error){
echo '<br /><div id="errmsg">';
echo $openErr;
echo '</div>';
header('Location: getuigenis.php');
exit(0);
}
if($stmt=$con_db->prepare("SELECT id, naam, bericht FROM opinies WHERE id > ? ORDER BY id DESC")){
$id=0;
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->bind_result($id, $naam, $bericht);
while($stmt->fetch()){
// Because $naam and $bericht are passed by reference, their value
// changes on every iteration to reflect the current row
$nmeRead=ucfirst($naam);
$txtRead=ucfirst($bericht);
echo ("<div style=\"margin:8px 0;padding:8px 12px;border:1px solid #ccc;border-radius:5px;\">");
echo ("<strong>".$nmeRead."</strong><br />".$txtRead."<br />");
echo ("</div>"."\n");
}
$stmt->close();
$con_db->close();
}
?>
// INSERT gedeelte hier
if(isset($_POST['VOU'])){
$con_db=new mysqli($host, $user, $code, $db);
mysqli_set_charset($con_db,"utf8");
if($mysqli->connect_error){
echo '<br /><div id="errmsg">';
echo $openErr;
echo '</div>';
header('Location: getuigenis.php');
exit(0);
}
// Prepare an insert statement
if($stmnt=$con_db->prepare("INSERT INTO opinies (voucher, naam, email, bericht) VALUES (?, ?, ?, ?)")){
mysqli_set_charset($con_db,"utf8");
$stmnt->bind_param('ssss', $_POST['VOU'],$_POST['NME'],$_POST['EML'],$_POST['TXT']);
$stmnt->execute();
$stmnt->close();
$con_db->close();
}else{
$stmnt->close();
$con_db->close();
header('Location: getuigenis.php');
exit(0);
}
}
// SELECT gedeelte erna
$con_db=new mysqli($host, $user, $code, $db);
mysqli_set_charset($con_db,"utf8");
if($mysqli->connect_error){
echo '<br /><div id="errmsg">';
echo $openErr;
echo '</div>';
header('Location: getuigenis.php');
exit(0);
}
if($stmt=$con_db->prepare("SELECT id, naam, bericht FROM opinies WHERE id > ? ORDER BY id DESC")){
$id=0;
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->bind_result($id, $naam, $bericht);
while($stmt->fetch()){
// Because $naam and $bericht are passed by reference, their value
// changes on every iteration to reflect the current row
$nmeRead=ucfirst($naam);
$txtRead=ucfirst($bericht);
echo ("<div style=\"margin:8px 0;padding:8px 12px;border:1px solid #ccc;border-radius:5px;\">");
echo ("<strong>".$nmeRead."</strong><br />".$txtRead."<br />");
echo ("</div>"."\n");
}
$stmt->close();
$con_db->close();
}
?>
Nu, voorlopig gecombineerd met deze insert-code werkt het perfect:
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
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
<?php
//database transaction
$con_db=new mysqli($host, $user, $code, $db);
// Check connection
if ($conn->connect_error) {
echo '<br /><div id="errmsg">';
echo $openErr;
echo '</div>';
mysqli_close(con_db) or die ($closeErr);
header('Location: getuigenis.php');
exit(0);
}
mysqli_set_charset($con_db,"utf8") or die ($openErr);
$addrec="INSERT INTO opinies (voucher,naam,email,bericht) VALUES ($_POST['VOU'],$_POST['NME'],$_POST['EML'],$_POST['TXT'])";
if(!mysqli_query($con_db,$addrec)){
echo '<br /><div id="errmsg">';
echo 'FOUT '.mysqli_errno().' : '.mysqli_error();
echo '</div>';
mysqli_close(con_db) or die ($closeErr);
header('Location: getuigenis.php');
exit(0);
}
$rows=mysqli_affected_rows($con_db);
$con_db->close();
}
?>
//database transaction
$con_db=new mysqli($host, $user, $code, $db);
// Check connection
if ($conn->connect_error) {
echo '<br /><div id="errmsg">';
echo $openErr;
echo '</div>';
mysqli_close(con_db) or die ($closeErr);
header('Location: getuigenis.php');
exit(0);
}
mysqli_set_charset($con_db,"utf8") or die ($openErr);
$addrec="INSERT INTO opinies (voucher,naam,email,bericht) VALUES ($_POST['VOU'],$_POST['NME'],$_POST['EML'],$_POST['TXT'])";
if(!mysqli_query($con_db,$addrec)){
echo '<br /><div id="errmsg">';
echo 'FOUT '.mysqli_errno().' : '.mysqli_error();
echo '</div>';
mysqli_close(con_db) or die ($closeErr);
header('Location: getuigenis.php');
exit(0);
}
$rows=mysqli_affected_rows($con_db);
$con_db->close();
}
?>
Kan iemand mij adviseren?
Vriendelijk groet,
Lowie.
"Nu, voorlopig gecombineerd met deze insert-code werkt het perfect:"
Dat is vreemd, want om de values staan geen quotes.
Dus tenzijn name, email en zo alleen maar nummers bevatten, zou dat fout moeten lopen.
Toevoeging op 01/04/2020 19:43:47:
waarom bouw je bij elke query opnieuw een connectie met de database? Doe dat bovenin je script eenmalig.
9 van de 10 scripts hebben altijd wel een connectie nodig, dus dat kun je eigenlijk meteen bovenaan wel regelen (vaak)
Toevoeging op 01/04/2020 19:45:59:
enne
PHP_SELF niet gebruiken. is onveilig.
En htmlspecialchars() is daar ook raar. urlencode() zou ik nog kunnen snappen
maar gebruiker liever gewoon <form action="" method="post">
Dat is vreemd, want om de values staan geen quotes.
Dus tenzijn name, email en zo alleen maar nummers bevatten, zou dat fout moeten lopen.
Toevoeging op 01/04/2020 19:43:47:
waarom bouw je bij elke query opnieuw een connectie met de database? Doe dat bovenin je script eenmalig.
9 van de 10 scripts hebben altijd wel een connectie nodig, dus dat kun je eigenlijk meteen bovenaan wel regelen (vaak)
Toevoeging op 01/04/2020 19:45:59:
enne
PHP_SELF niet gebruiken. is onveilig.
En htmlspecialchars() is daar ook raar. urlencode() zou ik nog kunnen snappen
maar gebruiker liever gewoon <form action="" method="post">




