[PHP] Geen results na MySQL queries

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 21-09 14:53

MueR

Admin Tweakers Discord

is niet lief

Topicstarter
Ik zit nu al 2 dagen vast met een probleem. Ik probeer uit een MySQL database verschillende instellingen te halen voor mijn website, zoals content-type, pragma, de titel van de website etc. Ik krijg alleen constant noppes terug uit mn database.
Om gegevens uit de database te halen gebruik ik een database class. Ik weet dat er niks mis is aan deze class, aangezien ik deze al 3 jaar gebruik, en niks heb aangepast voor deze site, en deze schaamteloos is "geleased" van phpBB. De database class is een child van de class b_system ($system). In deze parent class zitten een aantal functies die deze instellingen moeten ophalen. In mijn index.php worden eerst alle classes aangeroepen, de database class krijgt de voorspelbare naam $db. Nadat de classes zijn aangemaakt, wordt de functie initial_loading() aangeroepen, uit $system.
De functie zelf kan ik niks fouts mee ontdekken, ik krijg alleen gewoon nul resultaat. De SQL query klopt, in PHPMyAdmin krijg ik netjes de resultaten terug die ik verwacht, maar in mn eigen script niks. Om fouten af te vangen, laat ik mysql_error zien wanneer ik geen resultset terugkrijg. Deze geeft aan dat er een fout is, maar er is geen sql errorcode.
Ik snap het niet meer. Misschien dat iemand iets ziet wat ik verkeerd doe. Hieronder is mijn functie initial_loading:
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
public function initial_loading()
{
    // Database reference
    global $db;
    // Temp. array to store settings
    $settings = array();    
    // Build SQL query
    $sql = "SELECT  setting_group, setting_key, setting_value " .
            "FROM   " . TBL . "settings " .
            "WHERE  setting_section = '' " .
            "ORDER  BY  setting_group, setting_key ASC";
    // Run query, store result
    if ( !($result = $db->sql_query($sql)) )
    {
        // No result, show SQL error
        die($db->sql_error());
    }
    else
    {
        // Walk through the results
        while ($row = $db->sql_fetchrow($result))
        {
            $group = $row['setting_group'];
            $key = $row['setting_key'];
            $value = $row['setting_value'];
            // Store value and key in proper group
            $settings[$group][$key] = $value;
        }
        // Debugging purposes
        print_r($settings);
        // Store in class variable
        $this->settings = $settings;
    }
    // Load specific template headers
    //$this->load_template_headers();
}

Voor de volledigheid is hier mijn database class, en hier de betreffende pagina.

[ Voor 5% gewijzigd door MueR op 05-01-2007 14:34 . Reden: Database class toegevoegd ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Raar probleem,

Is je connection wel goed? og heb je twee connecties op de pagina? :?

Ik had dit probleem ook toen ben ik bij het selecteren van de database het resource_id van de connectie gaan meegeven. Toen aws het probleem opgelost.

Jochemmol


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 21-09 14:53

MueR

Admin Tweakers Discord

is niet lief

Topicstarter
Probleem is opgelost. De rechten van de database stonden niet goed ingesteld. phpmyadmin had een of ander vreemd karakter in de databasenaam geplaatst toen ik de rechten had ingesteld, en omdat ik grant all op die database had gegeven, heb ik er verder niet naar gekeken. Toch bedankt voor het meedenken.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • hamsteg
  • Registratie: Mei 2003
  • Laatst online: 20-09 00:03

hamsteg

Species 5618

Ik keek toevallig even mee ;-)
code:
1
2
3
4
5
6
MySQL Error
Error code:
1046
Description:
No database selected
Query: SELECT   setting_group, setting_key, setting_value FROM  int_settings WHERE  setting_section = '' ORDER  BY  setting_group, setting_key ASC

Je hebt niet geconnect aan een database of geen toegang. Kijk eens waar de global $db wordt gevuld.
edit:
Te laat

[ Voor 5% gewijzigd door hamsteg op 05-01-2007 14:36 ]

... gecensureerd ...


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Zit je misschien nog in een transactie? In de gegeven code zie ik niks, maar mocht je voor deze code nog een transactie begonnen zijn die niet is afgesloten dan zal een fout in de query voor een rollback zorgen. De laatst uitgevoerde query is dan de rollback ipv de opgegeven query. Aangezien bij de rollback geen fout optreed krijg je met mysql_error dan niet meer de relevante fout terug.

Zet (tijdelijk) in je db class even dat hij de error moet echoen nog voor de rollback code. Eventueel kun je overwegen om iets meer met het onthouden van fouten in je db class te doen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'