Functie slaat geen gegevens op in database
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
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
<?php
if(!empty($_POST)){
$question = trim($_POST['vraag']);
$description = trim($_POST['beschrijving']);
$type_id = $_POST['type'];
if($question = '') {
$errors[] = lang("NO_QUESTION");
}
elseif(!minMaxRange(5,50,$question)) {
$errors[] = lang("QUESTION_CHAR_LIMIT", array(5,50));
}
elseif($description = '') {
$errors[] = lang("NO_DESCRIPTION");
}
elseif(!minMaxRange(5,300,$description)) {
$errors[] = lang("DESCRIPTION_CHAR_LIMIT", array(5,300));
}
elseif($type_id = '') {
$errors[] = lang("NO_TYPE_ID");
}
else {
if(AddQuestion($question,$description,$type_id)){
$successes[] = lang("QUESTION_CREATION_SUCCESSFULL");
}
else {
$errors = lang("SQL_ERROR");
}
}
}
?>
if(!empty($_POST)){
$question = trim($_POST['vraag']);
$description = trim($_POST['beschrijving']);
$type_id = $_POST['type'];
if($question = '') {
$errors[] = lang("NO_QUESTION");
}
elseif(!minMaxRange(5,50,$question)) {
$errors[] = lang("QUESTION_CHAR_LIMIT", array(5,50));
}
elseif($description = '') {
$errors[] = lang("NO_DESCRIPTION");
}
elseif(!minMaxRange(5,300,$description)) {
$errors[] = lang("DESCRIPTION_CHAR_LIMIT", array(5,300));
}
elseif($type_id = '') {
$errors[] = lang("NO_TYPE_ID");
}
else {
if(AddQuestion($question,$description,$type_id)){
$successes[] = lang("QUESTION_CREATION_SUCCESSFULL");
}
else {
$errors = lang("SQL_ERROR");
}
}
}
?>
Wanneer ik in bovenstaande code na regel 5 een echo zet om alle waardes die ik invul weer te geven, werkt dit juist. Wanneer het script juist wordt uitgevoerd komt er een tekst regel te staan die wordt aangeroepen via "QUESTION_CREATION_SUCCESSFULL" (regel 28), als ik de waarden die ik invul hier wil laten verschijnen bevatten de variabele $question, $description en $type_id niets.
Dit is de code van de functie AddQuestion:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
function AddQuestion($question, $description, $type_id)
{
global $mysqli,$db_table_prefix;
$stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."questions
(
question,
description,
type_id
)
VALUES
(
?,
?,
?
)");
$stmt->bind_param("ssi",$question,$description,$type_id);
$result = $stmt->execute();
$stmt->close();
return $result;
}
?>
function AddQuestion($question, $description, $type_id)
{
global $mysqli,$db_table_prefix;
$stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."questions
(
question,
description,
type_id
)
VALUES
(
?,
?,
?
)");
$stmt->bind_param("ssi",$question,$description,$type_id);
$result = $stmt->execute();
$stmt->close();
return $result;
}
?>
Weten jullie waar ergens de fout zit waardoor dit script niet naar behoren werkt? Alvast bedankt!
Waardes moeten tussen enkele quotes:
Maar het gebruik van = is een toekenning/vullen van een var.
Je bedoelt denk ik == wat een vergelijking is.
Peter Flos op 25/08/2014 22:25:57:
Niet bij prepared statements! De oorspronkelijke code was goed.
Je vult nu in:
Je zult hier moeten invullen:
Klopt, ik was inderdaad de dubbelere = tekens vergeten. Probleem opgelost!
Begin dan b.v. met op regel 8 een echo te zetten met iets als 'test'.
Als dat niet in beeld komt terwijl je zeker weet dat dat wel zou moeten begin dan je vergelijking te controleren. Kijk naar alle variabelen in de vergelijking en kijk ook welke waardes er daadwerkelijk komen te staan.