[MYSQLi] Unexpected T_OBJECT

Gestart doorSanderc17 reacties100 weergaven

18 berichten · pagina 1 van 2

Sanderc

Lid · Topicstarter

Berichten
11.263
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik ben vandaag begonnen aan mijn systeem in Mysqli, voor mijn eerste keer werk ik daarmee, en dat is toch een beetje anders dan mysql zelf.

Nu blijf ik deze error hebben;

Codeblok (voorbeeld.php):

1

[Sat Jul 06 10:31:28 2013] [error] [client xx.xx.xxx.xx] PHP Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/sander2/domains/sander.freux.nl/public_html/cms/aanmelden.php on line 7

Dit is line 7:
Codeblok (voorbeeld.php):

1

$naam = mysqli->real_escape_string($_POST[naam]);

Dit is heel de code;

Codeblok (voorbeeld.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


require_once layout_boven.php;
require_once config.php;

if ($_SERVER[REQUEST_METHOD] == "POST")
{

$naam = mysqli->real_escape_string($_POST[naam]);
$pass = mysqli->real_escape_string($_POST[pass]);
$email = mysqli->real_escape_string($_POST[email]);

$aanmeld = "
INSERT INTO leden
(
naam,
wachtwoord,
email,
kladblok
),
VALUES
(
"
.$naam.",
"
.$pass.",
"
.$email.",
Leeg
)
"
;

$aan = $connect->prepare($aanmeld);

if($result = $aan->execute())
{

echo Succesvol aangemeld;
$aan->free_result();
}

else
{
echoAanmelden mislukt wegens een probleem met de SQL;
}

}

else
{
?>

Aanmelden



}
require_once layout_onder.php;
?>

Live demo: http://sander.freux.nl/cms/aanmelden.php

Kan iemand mij uitleggen wat er fout is? Bedankt
0
Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
$naam = $mysqli->real_escape_string($_POST[naam]);
0
Sanderc

Lid · Topicstarter

Berichten
11.263
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dylanh schreef:
$naam = $mysqli->real_escape_string($_POST[naam]);
En die mysqli moet mijn database verbinding zijn he?

toevoeging op 6 juli 2013, 11:00:13:
Nu is dit mijn code:

Codeblok (voorbeeld.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


require_once layout_boven.php;
require_once config.php;

if ($_SERVER[REQUEST_METHOD] == "POST")
{

$naam = $connect->real_escape_string($_POST[naam]);
$pass = $connect->real_escape_string($_POST[pass]);
$email = $connect->real_escape_string($_POST[email]);

$aanmeld = "
INSERT INTO leden
(
naam,
wachtwoord,
email,
kladblok
),
VALUES
(
"
.$naam.",
"
.$pass.",
"
.$email.",
Leeg
)
"
;

$aan = $connect->prepare($aanmeld);

if($result = $aan->execute())
{

echo Succesvol aangemeld;
$aan->free_result();
}

else
{
echoAanmelden mislukt wegens een probleem met de SQL;
}

}

else
{
?>

Aanmelden



}
require_once layout_onder.php;
?>

maar als ik mij probeer aan te melden is er gewoon een leeg vak cry?

http://sander.freux.nl/cms/aanmelden.php
0
Berichten
356
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
kijk eens naar regel 47.

Codeblok (voorbeeld.php):

1

0
Sanderc

Lid · Topicstarter

Berichten
11.263
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Kdesign schreef:
kijk eens naar regel 47.
Codeblok (voorbeeld.php):

1

0
Berichten
308
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
In je query heb je een komma winkDie hoeft er niet yummie
$aanmeld = "
        INSERT INTO leden
        (
            naam,
            wachtwoord,
            email,
            kladblok
        ),
        VALUES
        (
            ".$naam.",
            ".$pass.",
            ".$email.",
            Leeg
        )
    ";


Wordt dan:

$aanmeld = "
        INSERT INTO leden
        (
            naam,
            wachtwoord,
            email,
            kladblok
        )
        VALUES
        (
            ".$naam.",
            ".$pass.",
            ".$email.",
            Leeg
        )
    ";


toevoeging op 6 juli 2013, 13:38:48:
Misschien kan je ook:

error_reporting(E_ALL) bovenaan je script plaatsen for the love of debugging smile
toevoeging op 6 juli 2013, 13:40:14:
Vroeger en hedendaags ook soms, wanneer ik een query moet debuggen, echode ik die op het scherm. Kopieerde hem, en executeerde hem in PhpMyAdmin.

Zo kan je hem simpel debuggen wink
0
Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Sanderc schreef:
Eerdere citaten tonen
Dylanh schreef:
$naam = $mysqli->real_escape_string($_POST[naam]);
En die mysqli moet mijn database verbinding zijn he?
Jep, in je config zou vast ergens moeten staan $mysqli = new mysqli(host,user,pass,db);
0
Sanderc

Lid · Topicstarter

Berichten
11.263
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dankje dat werkt.

Nu check ik met isset of elke string leeg is of niet, maar dat doet het niet.

Hoe checken jullie of een input is ingevuld of niet? isset of emty of iets anders?
0
Berichten
1.168
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Zo doe ik het meestal:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]submit[/COLOR][COLOR= #007700]]))[/COLOR] [COLOR= #FF8000]// Form is submitted[/COLOR]
[COLOR= #007700]{[/COLOR]
    [COLOR= #0000BB]$errors[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]();[/COLOR] [COLOR= #FF8000]// Make array for errors[/COLOR]
    
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](![/COLOR][URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]inputField[/COLOR][COLOR= #007700]]) ||[/COLOR] [URL="http://www.php.net/empty"]empty[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]inputField[/COLOR][COLOR= #007700]]))[/COLOR] [COLOR= #FF8000]// Check if inputField has been sent & isnt empty[/COLOR]
        [COLOR= #0000BB]$errors[/COLOR][COLOR= #007700][] =[/COLOR] [COLOR= #DD0000]inputField is empty or has not been sent.[/COLOR][COLOR= #007700];[/COLOR] [COLOR= #FF8000]// Set error that inputField wasnt sent or was empty[/COLOR]
    
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](![/COLOR][URL="http://www.php.net/empty"]empty[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$errors[/COLOR][COLOR= #007700]))[/COLOR] [COLOR= #FF8000]// Error(s) found[/COLOR]
        [URL="http://www.php.net/foreach"]foreach[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$error[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$errors[/COLOR][COLOR= #007700])[/COLOR] [COLOR= #FF8000]// Print errors[/COLOR]
        [COLOR= #007700]{[/COLOR]
            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]Something went wrong: <br />[/COLOR][COLOR= #007700];[/COLOR]
            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #0000BB]$error[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]<br />[/COLOR][COLOR= #007700];
        }
    }[/COLOR]
    [URL="http://www.php.net/else"]else[/URL] [COLOR= #FF8000]// No errors[/COLOR]
    [COLOR= #007700]{
        
    }
}[/COLOR]
[URL="http://www.php.net/else"]else[/URL] [COLOR= #FF8000]// Form isnt submitted[/COLOR]
[COLOR= #007700]{

}[/COLOR]
?>


Als je namelijk gaat kijken of inputField leeg is maar niet hebt gecheckt of die input is verzonden, als ie dan niet is verzonden krijg je een PHP error.
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Eerst checken of er een post verzonden is met

Codeblok (voorbeeld.php):

1

$_SERVER[REQUEST_METHOD] == "POST"

Dit is netter dan een isset opzet.

Vervolgens check je de input

Codeblok (voorbeeld.php):

1

!isset($_POST[var]) && empty( trim($_POST[var]) )

Ik heb hier gekozen voor het trimmen van de input. Dit zorgt ervoor dat er geen onnodige whitespaces zijn aan het einde van mijn string, en zo zorg je er ook voor dat men niet alleen een spatie kan gebruiken voor bijvoorbeeld een inlogsysteem.

Als laatste doe ik nog een ctype check op basis van welke vorm mijn input moet hebben. Zo kun je een input forceren om een nummer te zijn o.i.d.
0
Sanderc

Lid · Topicstarter

Berichten
11.263
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Oke, ik deed dit;

Codeblok (voorbeeld.php):

1
2
3
4

if ($_SERVER[REQUEST_METHOD] == "POST")
{
if(isset($_POST[naam]) && isset($_POST[pass]) && isset($_POST[email]) )
{

ik zal nu het op jou mannier verder doen wink
0
Berichten
1.168
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
Eerst checken of er een post verzonden is met
Codeblok (voorbeeld.php):

1

$_SERVER[REQUEST_METHOD] == "POST"

Dit is netter dan een isset opzet.

Vervolgens check je de input

Codeblok (voorbeeld.php):

1

!isset($_POST[var]) && empty( trim($_POST[var]) )

Ik heb hier gekozen voor het trimmen van de input. Dit zorgt ervoor dat er geen onnodige whitespaces zijn aan het einde van mijn string, en zo zorg je er ook voor dat men niet alleen een spatie kan gebruiken voor bijvoorbeeld een inlogsysteem.

Als laatste doe ik nog een ctype check op basis van welke vorm mijn input moet hebben. Zo kun je een input forceren om een nummer te zijn o.i.d.

+1.
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Sanderc schreef:
Oke, ik deed dit;
Codeblok (voorbeeld.php):

1
2
3
4

if ($_SERVER[REQUEST_METHOD] == "POST")
{
if(isset($_POST[naam]) && isset($_POST[pass]) && isset($_POST[email]) )
{

ik zal nu het op jou mannier verder doen wink
Nouja, met mijn opzet heb je de meeste controle. Maar een simpele isset & empty (zonder trim) voldoet vaak ook wel. Het is maar net welke data je terug wil hebben.

Als je een inlogsysteem hebt, waarbij mensen ook met rare tekens en cijfers mogen inloggen, is een ctype check niet nodig. Maar wanneer het enkel alfenumeriek mag zijn, mag een ctype niet ontbreken.

Ik raad je daarom aan de mogelijkheden van de ctype functies te bekijken:
http://www.php.net/manual/en/ref.ctype.php
0
Sanderc

Lid · Topicstarter

Berichten
11.263
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Bedankt, is dit dan goed?

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8

if ($_SERVER[REQUEST_METHOD] == "POST")
{
if(isset($_POST[naam]) && !empty(trim($_POST[naam])) )
{
if(isset($_POST[pass]) && !empty(trim($_POST[pass])) )
{
if(isset($_POST[email]) && !empty(trim($_POST[email])) )
{

toevoeging op 6 juli 2013, 21:02:46:
En hoe zorg ik dat mijn "id" kolom auto_increment is?

http://prntscr.com/1dwqkx
0
Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Sanderc schreef:
Bedankt, is dit dan goed?
Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8

if ($_SERVER[REQUEST_METHOD] == "POST")
{
if(isset($_POST[naam]) && !empty(trim($_POST[naam])) )
{
if(isset($_POST[pass]) && !empty(trim($_POST[pass])) )
{
if(isset($_POST[email]) && !empty(trim($_POST[email])) )
{

toevoeging op 6 juli 2013, 21:02:46:
En hoe zorg ik dat mijn "id" kolom auto_increment is?

http://prntscr.com/1dwqkx

je kan issets op een line doen en dan met &&.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren