Functie slaat geen gegevens op in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jules Kreutzer

Jules Kreutzer

25/08/2014 20:49:39
Quote Anchor link
Ik heb een functie (AddQuestion) die gegevens moet opslaan in een database. De functie staat in een apart bestand wat wordt aangeroepen. Het formulier wat moet worden ingevuld bevat volgende code:

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
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");
            }
        }
    }

?>


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)
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
<?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;
}

?>



Weten jullie waar ergens de fout zit waardoor dit script niet naar behoren werkt? Alvast bedankt!
 
PHP hulp

PHP hulp

20/05/2024 03:26:22
 
Peter  Flos

Peter Flos

25/08/2014 22:25:57
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
VALUES
    (
    ?,
    ?,
    ?
    )


Waardes moeten tussen enkele quotes:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
VALUES
    (
    '?',
    '?',
    '?'
    )
 
- SanThe -

- SanThe -

25/08/2014 22:45:24
Quote Anchor link
Hoop if() en elseif() regels.
Maar het gebruik van = is een toekenning/vullen van een var.
Je bedoelt denk ik == wat een vergelijking is.
 
Willem vp

Willem vp

26/08/2014 00:16:48
Quote Anchor link
Peter Flos op 25/08/2014 22:25:57:
Waardes moeten tussen enkele quotes:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
VALUES('?', '?', '?')

Niet bij prepared statements! De oorspronkelijke code was goed.
 
Peter K

Peter K

26/08/2014 10:58:30
Quote Anchor link
Wat SanThe zegt, je maakt een fout in je IF en ELSEIF functies.

Je vult nu in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($question = '') {


Je zult hier moeten invullen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($question == '') {
 
Jules Kreutzer

Jules Kreutzer

26/08/2014 13:14:18
Quote Anchor link
Klopt, ik was inderdaad de dubbelere = tekens vergeten. Probleem opgelost!
 
Peter K

Peter K

26/08/2014 13:17:41
Quote Anchor link
Je kunt het ook eenvoudig zelf testen wat er gebeurd in je script.

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.
 



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.