[PHP/MySQL] Registeren werkt niet

Pagina: 1
Acties:
  • 290 views

  • PatrickLeijser
  • Registratie: Augustus 2009
  • Laatst online: 25-06 10:03
Ik ben niet een super goede kenner van PHP en MySQL. Maar ik wil het super graag leren dus ging ik een registratie systeem maken. Met MySQL Lukte me het, maar aangezien ik nu liever alles met MySQLi wil doen omdat dat nieuwer is, probeer ik het nou met MySQLi. Ik gebruik prepare statements, omdat me dat wel handig en veilig lijkt te werken. Maar een probleem.. het geeft een error aan. En ik weet echt niet waardoor het komt.

Hieronder de 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
include("config.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registreren</title>
</head>

<body>
<?php
if(isset($_POST['registreren']))
{
    $gebruiksnaam   = $_POST['gebruiksnaam'];
    $wachtwoord     = $_POST['wachtwoord'];
    $wachtwoord2    = $_POST['wachtwoord2'];
    $email          = $_POST['email'];
    
    
    if(empty($gebruiksnaam))
    {
        $error = 'Je hebt geen gebruiksnaam ingevuld.';
    }
    elseif(empty($wachtwoord))
    {
        $error = 'Je hebt geen wachtwoord ingevuld.';
    }
    elseif(empty($wachtwoord2))
    {
        $error = 'Je hebt geen bevestigende wachtwoord ingevuld.';
    }
    elseif(empty($email))
    {
        $error = 'Je hebt geen email ingevuld.';
    }
    else
    {
        if($wachtwoord != $wachtwoord2)
        {
            $error = 'De wachtwoorden komen niet overeen.';
        }
        else
        {
            if(!isset($_POST['akkoord']))
            {
                $error = 'Je bent niet akkoord gegaan met de regels.';
            }
            else
            {
                $sql = "INSERT INTO gebruiker (gebruiksnaam, wachtwoord, email) VALUES (?, ?, ?";
                if($stmt = $mysqli->prepare($sql))
                {
                    $stmt->blind_param('sss', $gebruiksnaam, $wachtwoord, $email);
                    if(!$stmt->execute())
                    {
                        echo 'Query mislukt';
                    }
                    
                    $stmt->close();
                }
                else
                {
                    echo 'Query mislukt 2';
                }
    
            }
        }
    }
}

if(isset($error))
{
    echo $error;
}
?>
<form method="post">
    Gebruiksnaam<br />
    <input type="text" name="gebruiksnaam" /><br /><br />
    Wachtwoord<br />
    <input type="text" name="wachtwoord" /><br /><br />
    Bevestig Wachtwoord<br />
    <input type="text" name="wachtwoord2" /><br /><br />
    E-mail<br />
    <input type="text" name="email" /><br /><br />
    <input type="checkbox" name="akkoord" /> Ik heb de regels gelezen en ik ga akkoord<br /><br />
    <input type="submit" name="registreren" value="Registreer" />
</form>
</body>
</html>

Verwijderd

"het geeft een error aan" -> welke error

code:
1
$sql = "INSERT INTO gebruiker (gebruiksnaam, wachtwoord, email) VALUES (?, ?, ?";

-> je mist hier een ) voor de laatste quote.

Verwijderd

Verwijderd schreef op vrijdag 14 augustus 2009 @ 18:06:
"het geeft een error aan" -> welke error

code:
1
$sql = "INSERT INTO gebruiker (gebruiksnaam, wachtwoord, email) VALUES (?, ?, ?";

-> je mist hier een ) voor de laatste quote.
Hij geeft "Query mislukt 2", hij kan hem dus niet "preparen". De vergeten ")" is het probleem dus lijkt me. Standaard debuggen lijkt me?

  • PatrickLeijser
  • Registratie: Augustus 2009
  • Laatst online: 25-06 10:03
Verwijderd schreef op vrijdag 14 augustus 2009 @ 18:06:
"het geeft een error aan" -> welke error
Ik had een voorbeeld website erbij geplaatst.
Verwijderd schreef op vrijdag 14 augustus 2009 @ 18:06:
code:
1
$sql = "INSERT INTO gebruiker (gebruiksnaam, wachtwoord, email) VALUES (?, ?, ?";

-> je mist hier een ) voor de laatste quote.
Helemaal over het hoofd gezien. Ik ga het even rechtzetten en kijken of het probleem dan verholpen is.

EDIT:
Nu krijg ik de volgende error.

Fatal error: Call to undefined method mysqli_stmt::blind_param() in /home/patrick/domains/breaky.eu/public_html/systeem/registreren.php on line 54

Ik probeer het zelf op te lossen, maar als iemand het antwoord weet hoor ik het graag ;)

[ Voor 19% gewijzigd door PatrickLeijser op 14-08-2009 18:17 ]


Verwijderd

PatrickLeijser schreef op vrijdag 14 augustus 2009 @ 18:14:
Nu krijg ik de volgende error.

Fatal error: Call to undefined method mysqli_stmt::blind_param() in /home/patrick/domains/breaky.eu/public_html/systeem/registreren.php on line 54
Is dat een blinde parameter? :9

[ Voor 22% gewijzigd door Verwijderd op 14-08-2009 18:18 ]


Verwijderd

Als je dat niet op kan lossen met die hint...

  • PatrickLeijser
  • Registratie: Augustus 2009
  • Laatst online: 25-06 10:03
Stom van mij om er Blind van te maken ipv bind..
Maar allemaal bedankt voor het helpen. Het werkt nu :)

[ Voor 36% gewijzigd door PatrickLeijser op 14-08-2009 18:27 ]


Verwijderd

PatrickLeijser schreef op vrijdag 14 augustus 2009 @ 18:25:
Stom van mij om er Blind van te maken ipv bind..
Maar allemaal bedankt voor het helpen. Het werkt nu :)
Nogal stom ja, en als je die foutmelding ziet dan valt dat je toch wel op? Of ben je ook blind? :+ ;)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:56

Creepy

Tactical Espionage Splatterer

Hmmja... voortaan aub eerst even de foutmelding echt lezen en eens gaan kijken wat er dan aan de hand zou kunnen zijn. Dit is gewoon een kwestie van begrijpend lezen en ik ga er vanuit dat iedereen die hier kan posten dat ook wel kan ;)

Hier op GoT verwachten we meer dan alleen een foutmelding + code. Geef dan ook in een eventueel volgend topic dan ook aan wat je zelf al hebt geprobeerd en wat daar niet mee lukte. Ga eerst zelf aan de slag, probeer zelf er echt even wat moeite in te steken voordat je een topic hier opent. Als je Het algemeen beleid eens door wilt lezen dan weet je precies wat hier nu wel en niet de bedoeling is.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.