DB Klasse, query in Funktion Fehler: not a valid MySQL-Link resource

Axor

Mitglied
Ich verwende folgende MySQL DB Klasse

http://www.ricocheting.com/scripts/php_mysql_wrapper.php

Nun hab ich folgenden Code:
PHP:
<?php
include("config.inc.php");
include("Database.class.php");

$db = new Database($config['server'], $config['user'], $config['pass'], $config['database'], $config['tablePrefix']);
$db->connect();

function doQuery($id) {
    global $db;
    $sql = "SELECT att FROM table
          WHERE id='".$id."'";
    $row = $db->query_first($sql);
    return $row;    
}

$db->close();
?>

Wie kann ich nun den Query-Aufruf in der Funktion zum Laufen bringen?

Bekomme folgenden Fehler:
Warning: mysql_query(): 6 is not a valid MySQL-Link resource in .../Database.class.php on line 120


Line 120: $this->query_id = mysql_query($sql, $this->link_id);


Irgendwas stimmt mit der link_id nicht

Wenn ich den Query Aufruf außerhalb der Funktion mache, funktionierts...

Danke für jede Hilfe!
 
Durch die ganzen @'s in der Klasse werden die Fehler unterdrückt und man bekommt keine vernünftige Fehlermeldung.

Ich vermute aber, dass die Verbindung zur Datenbank nicht richtig hergestellt wird.
 
Die Verbindung wird ja richtig hergestellt, das Problem ist nur, dass sobald ein $db->query... in einer Funktion aufgerufen wird ein Fehler kommt.

Ansonsten funktioniert ja alles... :(


Wenn ich Beispielsweise folgendes direkt in die Funktion reinschreibe, funktionierts auch:

PHP:
<?php
include("config.inc.php");
include("Database.class.php");



function doQuery($id) {
    global $db;
$db = new Database($config['server'], $config['user'], $config['pass'], $config['database'], $config['tablePrefix']);
$db->connect();
    $sql = "SELECT att FROM table
          WHERE id='".$id."'";
    $row = $db->query_first($sql);
$db->close();
    return $row;    
}


?>
 
Hat niemand eine Ahnung was da das Problem ist?

Wieso kann ich innerhalb von Funktionen keine MySql-Befehle aus der Klasse aufrufen?

Wie muss ich die Klasse definieren, damit ich überall drauf zugriff hab.
Möchte gerne 1x pro File ein connect aufrufen und danach überall mit der DB arbeiten können - das muss doch gehen...?!
 
Wenn du das $db->close() vor dem Funktionsaufruf doQuery() ausführst, wird die Datenbankverbindung beendet, bevor die Query abgesetzt wird. Wenn du also den obigen Code irgentwo per [phpf]include[/phpf] einbindest, oder einfach die Funktion doQuery() nach $db->close() ausführst, existiert keine Verbindung mehr zur Datenbank.

Kommentiere das $db->close() einfach mal aus, und schau was passiert.
 
Zurück