[PHP] mysqli class probleempje

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • VR46
  • Registratie: Januari 2005
  • Laatst online: 08-09 12:51
Ik heb hier het volgende lapje code (een selectie van de hele code):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
# FileName="connect.php"
# Type="MYSQL"
# HTTP="true"
$hostname_Techxellence = "localhost";
$database_Techxellence = "xxxxx";
$username_Techxellence = "xxxxx";
$password_Techxellence = "xxxxx";
$connect = new mysqli($hostname_XXXX, $username_XXXX, $password_XXXX, $database_XXXX);

function setUserLoginTime($time,$date) {
    $query = "SELECT lastonlinedate, lastonlinetime FROM xxxx.users WHERE username='".$_SESSION['userdata'][1]."' and id='".$_SESSION['userdata'][0]."' LIMIT 0,1";
    $result = $connect->query($query);
    if (isset($_SESSION['loggedin'])) {
        $query = "UPDATE xxxx.users SET lastonlinedate='".$date."', lastonlinetime='".$time."' WHERE username='".$_SESSION['userdata'][1]."' and id='".$_SESSION['userdata'][0]."'";
        $result = $connect->query($query);
    }
}
setUserLoginTime(date("H:i:s"),date("Y-m-d"));
?>

Ik heb net alles omgezet om gebruik te maken van MySQL Improved, in plaats van de "verouderde" mysql functies, dus nu gebruik ik de mysqli class in plaats van de standaard functies als mysql_connect.
Het probleem is dat het overal prima werkt, behalve bij de bovenstaande functie "setUserLoginTime". Als hij daar doorheen probeert te komen krijg ik deze foutmelding:
code:
1
"Fatal error: Call to a member function query() on a non-object in D:\Program Files\Wamp\www\tech\Connections\connect.php on line 13"

..Maar het vreemde is dat ik overal dezelfde mysql query methode gebruik (dus $connect->query($query);) - hier werkt het alleen niet....
Wat doe ik fout? Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Kijk eens naar scoping.

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Dat is natuurlijk erg basic, je moet $connect ook als parameter meegeven.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$hostname_Techxellence = "localhost";
$database_Techxellence = "xxxxx";
$username_Techxellence = "xxxxx";
$password_Techxellence = "xxxxx";
$connect = new mysqli($hostname_XXXX, $username_XXXX, $password_XXXX, $database_XXXX);

function setUserLoginTime($connect,$time,$date) {
    $query = "SELECT lastonlinedate, lastonlinetime FROM xxxx.users WHERE username='".$_SESSION['userdata'][1]."' and id='".$_SESSION['userdata'][0]."' LIMIT 0,1";
    $result = $connect->query($query);
    if (isset($_SESSION['loggedin'])) {
        $query = "UPDATE xxxx.users SET lastonlinedate='".$date."', lastonlinetime='".$time."' WHERE username='".$_SESSION['userdata'][1]."' and id='".$_SESSION['userdata'][0]."'";
        $result = $connect->query($query);
    }
}
setUserLoginTime($connect, date("H:i:s"),date("Y-m-d"));


Ga eens lezen over scoping, zie ook GlowMouse zijn post ;)

[ Voor 3% gewijzigd door XWB op 27-06-2007 15:34 ]

March of the Eagles


Acties:
  • 0 Henk 'm!

  • VR46
  • Registratie: Januari 2005
  • Laatst online: 08-09 12:51
Dank jullie wel, global $connect doet zijn werk :P !

[ Voor 102% gewijzigd door VR46 op 27-06-2007 15:36 ]


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Hacku schreef op woensdag 27 juni 2007 @ 15:33:
Dat is natuurlijk erg basic, je moet $connect ook als parameter meegeven.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$hostname_Techxellence = "localhost";
$database_Techxellence = "xxxxx";
$username_Techxellence = "xxxxx";
$password_Techxellence = "xxxxx";
$connect = new mysqli($hostname_XXXX, $username_XXXX, $password_XXXX, $database_XXXX);

function setUserLoginTime($connect,$time,$date) {
    $query = "SELECT lastonlinedate, lastonlinetime FROM xxxx.users WHERE username='".$_SESSION['userdata'][1]."' and id='".$_SESSION['userdata'][0]."' LIMIT 0,1";
    $result = $connect->query($query);
    if (isset($_SESSION['loggedin'])) {
        $query = "UPDATE xxxx.users SET lastonlinedate='".$date."', lastonlinetime='".$time."' WHERE username='".$_SESSION['userdata'][1]."' and id='".$_SESSION['userdata'][0]."'";
        $result = $connect->query($query);
    }
}
setUserLoginTime($connect, date("H:i:s"),date("Y-m-d"));


Ga eens lezen over scoping, zie ook GlowMouse zijn post ;)
Ik heb het niet getest, maar zou je hier geen references gebruiken of doet PHP dat automatisch goed?

Voor het verschil mysql<->mysqli, kijk hier eens. Ook in de comments worden wat dingen genoemd.

[ Voor 5% gewijzigd door GlowMouse op 27-06-2007 15:37 ]


Acties:
  • 0 Henk 'm!

  • VR46
  • Registratie: Januari 2005
  • Laatst online: 08-09 12:51
GlowMouse schreef op woensdag 27 juni 2007 @ 15:36:
[...]

Ik heb het niet getest, maar zou je hier geen references gebruiken of doet PHP dat automatisch goed?
Als je me even uitlegd wat references zijn ;)

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
cbernardini schreef op woensdag 27 juni 2007 @ 15:37:
[...]

Als je me even uitlegd wat references zijn ;)
references ;)

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
GlowMouse schreef op woensdag 27 juni 2007 @ 15:36:
[...]

Ik heb het niet getest, maar zou je hier geen references gebruiken of doet PHP dat automatisch goed?

Voor het verschil mysql<->mysqli, kijk hier eens. Ook in de comments worden wat dingen genoemd.
In php 5 is een instantie van een class een referentie ;)
Dank jullie wel, global $connect doet zijn werk
global doet zijn werk maar indien mogelijk niet gebruiken ;)

March of the Eagles


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 02:40

aex351

I am the one

Als dit een deel van een class moet voorstellen kan je ook de keyword 'this' gebruiken.
PHP:
1
$this->connection->query($query);

Vind ik een mooiere oplossing dan globals gebruiken.
Of anders gewoon $connect als parameter meegeven aan de betreffende functie.

Nu ik ook in andere talen werk merk ik pas hoe vervelend niet OO programmeren is :P

[ Voor 31% gewijzigd door aex351 op 27-06-2007 15:52 ]

< dit stukje webruimte is te huur >

Pagina: 1