[PHP] Database connectie in custom session handler

Pagina: 1
Acties:
  • 118 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een custom session handler gemaakt om m'n sessions op te kunnen slaan in een mysql database. Nu heb ik een globaal database object die een database connectie maakt en waar de queries heen worden gestuurd zodat er een resultaat terug kan worden gegeven.

Het probleem is dat alle queries in m'n script gewoon werken, behalve die in m'n custom read function van m'n custom session handler. Welke query ik ook aan m'n globale database object geef vanuit die functie, mysql_query geeft altijd false terug. mysql_error() blijft hierbij leeg...

Heeft iemand misschien een idee waar dit aan kan liggen?

Het pasten van de query text in phpmyadmin laat zien dat de queries echt kloppen...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Mijn glazen bol is net vanochtend stuk gegaan. ;)

Post eens wat relevante code, want dit is giswerk zo.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Zonder code wordt het waarschijnlijk erg moeilijk om dat in te schatten :) . Wij kunnen niet voorspellen hoe jouw sessionhandler werkt.

edit:
:w -NMe-

[ Voor 8% gewijzigd door JHS op 24-02-2006 13:33 ]

DM!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het begin van de session read functie in m'n custom session handler is:

public function customRead($id)
{
global $database; /* Global Database Object */

$result = $database->query( " SELECT content" .
" FROM sessions" .
" WHERE id = \"" . $id . "\"");


Het database object geeft die query door aan mysql_query() dit doe ik overal in m'n script hetzelfde, alleen in dit geval mislukt de query altijd...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Omdat? Druk mysql_error() eens af? En de query die daadwerkelijk uitgevoerd wordt, klopt die ook wel?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
global :r

Post ff je hele class, aan zo'n stukje kan ik nog niet ruiken wat het probleem is :o ;)

edit: ik bedoel dus de verdere verwerking van die query

[ Voor 25% gewijzigd door flashin op 24-02-2006 13:53 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil de volledige code wel posten, maar hoe kan ik die netjes weergeven? was dat met [code]?

Wat is er zo slecht aan global trouwens?

Acties:
  • 0 Henk 'm!

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 21-09 00:11
[php] en [ /php ] (spaties weglaten natuurlijk ;))

[ Voor 61% gewijzigd door om3ega op 24-02-2006 13:59 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Volledige code is niet nodig. Alleen het relevantie stukje. En de info waar ik in mijn vorige post om vroeg is relevanter. ;)

Trouwens, niks mis met global, als je het tenminste goed toepast. Een global database object kan echt geen kwaad.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

-NMe- schreef op vrijdag 24 februari 2006 @ 14:03:
Trouwens, niks mis met global, als je het tenminste goed toepast. Een global database object kan echt geen kwaad.
Het risico is dat je het per ongeluk overschrijft, bijvoorbeeld :) . Als je dan toch object georienteerd bezig bent, kan je beter een Singleton pattern implementeren :) .

DM!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Edit: Teveel code, relevante code staat lager.

[ Voor 100% gewijzigd door Verwijderd op 24-02-2006 14:26 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Haal eens alle functies uit die post weg die niet relevant zijn voor je probleem. We hebben niet je hele klasse nodig. En post eens een antwoord op de vragen die ik al twee keer gesteld heb. :o

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
mysql_error() bleef trouwens leeg...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Relevante functies:

Uit de session klasse:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        public function customRead($id)
        {
            global $database; /* Global Database Object */
            
            $result = $database->getField(  " SELECT content" .
                                            " FROM sessions" .
                                            " WHERE id = \"" . $id . "\"");

            if($result == "")
            {
                return "";
            }
            else 
            {
                return $result;
            }
        }


Uit de database klasse:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        public function getField($query)
        {
            $field = "";
            
            if(DATABASE_TYPE == 'mysql')
            {
                $result = mysql_query($query, $this->connection);
                
                if($result === false)
                {
                    trigger_error("Database query failed:" . $query, E_USER_ERROR);
                    return false;
                }
                
                $row = mysql_fetch_row($result);
                
                $field = $row[0];
            }
            
            return $field;
        }

Acties:
  • 0 Henk 'm!

Verwijderd

'global $database' is wel al aangemaakt voordat de sessie gestart wordt?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, hij weet daarna ook de query nog uit te voeren in de klasse, alleen geeft dit altijd false terug, welke query dan ook...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik kwam er dus net achter dat het maken van de database connectie en het starten van de sessie in de verkeerde volgorde gebeurde... Maar wat ik dan vreemd vind is dat ik geen error te zien krijg als ik mysql_error() laat weergeven, zoiets als "no connection" of whatever...
Pagina: 1