return mysql query resource

sub7even

Mitglied
Ja,
ich versuche momentan umzusetzen,
das ich mein script mehrmals mit einer datenbank nutzen kann.
Dafür habe ich mir überlegt einfach eine funktion zu machen welche mysql_query ersetzt
und über preg_replace dan prefix_ durch den aus der config gelesenen prefix ersetzt.

Als Code sieht das dan folgendermaßen aus:

config.php:
PHP:
<?php
define('HOST', 'localhost');
define('USER', 'test');
define('PASS', '***');
define('DBASE', 'testdb');
define('PREFIX', 'xs1_');
?>

mysql.php
PHP:
<?php

$db_executed_querys = 0;

    function db_connect()
    {
       define('CON', mysql_connect(HOST,USER,PASS) or die(mysql_error()));
       mysql_select_db(DBASE, CON) or die(mysql_error());
    }

	function db_add_query()
	{
		global $db_executed_querys;
		$db_executed_querys++;
		
	}
	
	function db_replace($query)
    {
        $query = preg_replace("/prefix_(\S+?)([\s\.,]|$)/", PREFIX."\\1\\2", $query);
		print "Query: \"".$query."\"";
        return $query;
    }
	
	function db_query($query)
    {
        $query = db_replace($query);
		$result = @mysql_query($query, CON);
		db_add_query();
		return $result;
    }
?>

leider funktioniert das nicht,
den die db_query function gibt scheinbar keine gültige resource zurück.

Ich probiere jetzt schon die ganze Zeit daran herum...
aber es will einfach nicht funktionieren
bekomme immer folgenden fehler:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/clients/client2/web6/web/test.php on line 17

in Zeile 15-17 der test.php befindet sich folgendes:
PHP:
db_connect();
$cfg_query = db_query("SELECT * FROM prefix_config");
while($cfg = mysql_fetch_object($cfg_query))

Hoffe mir kann jemand helfen das Problem zu lösen,
den mir sind die Ideen ausgegangen :/
 
Du müsstest die Datenbankverbindung global definieren, also nicht erst in einer Funktion (db_connect()).

Tipp: für sowas gibt es auch Vorlagen als PHP-Klassen. Die eignen sich durchaus, auch zum Abgucken ;)
 
hmmm hab das nun versucht,

mysql.php änderung
PHP:
function db_connect()
    {
       return mysql_connect(HOST,USER,PASS) or die(mysql_error());
       mysql_select_db(DBASE, CON) or die(mysql_error());
    }

test.php änderung
PHP:
define('CON',db_connect());
$cfg_query = db_query("SELECT * FROM prefix_config");
while($cfg = mysql_fetch_object($cfg_query))

Funktionieren tut es aber trotzdem nicht.
Und zu den klassen...
Ich möchte ja keine Klasse haben.
ich möchte nur das mysql_ durch db_ ersetzen,
damit es nicht so ein großer unterschied zum normalen ist^^

OK, habe nun doch eine Klasse verwendet...
läuft nu alles^^
 
Zuletzt bearbeitet:
Zurück