Fehler in Datenbankabfrage per MySQL-Klasse

PZIKO333

Grünschnabel
Hallo erstmal :) ich hab ein kleines Problem mit einer Datenbankabfrage welche ich über eine Klasse laufen lasse. Aus irgendeinem mir unerklärlichen Grund kriege ich keine Resultate geliefert obwohl sämtliche Variablen korrekt angegeben sind. Wenn ich zum Test die Abfrage nicht über die Klasse laufen lasse (allerdings nach dem gleichen Prinzip) funktioniert alles perfekt. So langsam aber sicher verlier ich echt die Hoffnung das ich den Fehler finde :) deswegen hoffe ich das hier evtl. wer nen Fehler findet den ich reingebastelt habe ^^

Zum Code:

Erstmal die index.php welche sehr kurz gehalten ist :)

PHP:
<?php
session_start();

define("ISINDEX", true);

require("inc/config.inc.php");
require("inc/mysql_class.inc.php");
require("inc/main_functions.inc.php");

if (isset($_GET['content'])){
	$content = $_GET['content'];
} else {
	$content = "";
}
contentInject();
?>

so da is alles in Ordnung nur trotzdem wichtig zu sehen für den Rest :)

dann die config.inc.php

PHP:
if(defined("ISINDEX"))
{

$sqldbhost = "*****";
$sqldbuser = "*****";
$sqldbpw = "*****";
$sqldb = "*****";

$modulestable = "modules";

} else {
	echo "<meta http-equiv=\"refresh\" content=\"0;URL=../?content=\">";
}

zunächst die main_functions.inc.php

PHP:
<?php
if(defined("ISINDEX"))
{

if(!function_exists("contentInject"))
{
	function contentInject() {
		global $content;

		require("inc/config.inc.php");

		if($content == "") {
			include("content.php");
		} else {
			$dbconn = new Mysql($sqldbhost, $sqldb, $sqldbuser, $sqldbpw);
			$result = $dbconn->fetcharray("SELECT * FROM $modulestable WHERE content = $content");
				if($result["active"] == "1")
				{
					if(file_exists("content".$result["contentfile"].".php"))
					{
						include("content".$result["contentfile"].".php");
					} else {
						include("content.php");
					}
				} else {
					include("content.php");
				}
			$close = $dbconn->close();
		}
	}
}

if(!function_exists("dbError"))
{
	function dbError() {
		$errno = mysql_errno();
		$error = mysql_error();
		$text = "<p>( ".$errno." : ".$error." )<p>\n";
		die(errorCreation("Datenbankfehler", $text));
	}
}

if(!function_exists("errorCreation"))
{
	function errorCreation($title, $text)
	{
?>
Muss ja nicht jeder sehen :P
<?php
	}
}

} else {
	echo "<meta http-equiv=\"refresh\" content=\"0;URL=../?content=\">";
}
?>

und zum Schluß noch die Klasse allerdings nur die relevanten Bereiche

PHP:
<?php
if(defined("ISINDEX"))
{
	    class Mysql {

        var $server;
        var $db;
        var $acc;
        var $pw;
        var $query;
        var $result;
        var $result_multiple;
        var $rows;
        var $i;

        function mysql($sqldbhost, $sqldb, $sqldbuser, $sqldbpw)
        {
            $this->server = $sqldbhost;
            $this->db     = $sqldb;
            $this->acc    = $sqldbuser;
            $this->pw     = $sqldbpw;

            $connect = @mysql_connect($this->server, $this->acc, $this->pw);

            if ($connect) {
                @mysql_select_db($this->db);
                return true;
            } else {
                dbError();
            }
        }


        function fetcharray($statement)
        {
            $this->query = @mysql_query($statement);
            $this->result = @mysql_fetch_array($this->query);
            return $this->result;
        }

        function close()
        {
            if (@mysql_close()) {
                return true;
            } else {
                return false;
            }
        }

    }
} else {
	echo "<meta http-equiv=\"refresh\" content=\"0;URL=../?content=\">";
}
?>

Hab für jeden Tip ein offenes Ohr :)
 
Zuletzt bearbeitet:
Ich denke es liegt an der Methode:

PHP:
class Mysql {

        var $server;
        var $db;
        var $acc;
        var $pw;
        var $query;
        var $result;
        var $result_multiple;
        var $rows;
        var $i;

        function mysql($sqldbhost, $sqldb, $sqldbuser, $sqldbpw)

sollte vermutlich so aussehen:
PHP:
function Mysql($sqldbhost, $sqldb, $sqldbuser, $sqldbpw)
 
Daran liegt es leider nicht :/ der Gedanke kam mir für kurze Zeit auch bis mir einfiel das es eigtl. egal ist ob groß oder klein ^^ Habs zwar jetzt nochmal spaßes halber angepasst aber ein Ergebnis wird dennoch nicht geliefert. Danke trotzdem :)
 
Und warum machst Du dann die Fehlerausgaben weg?
So kann man nicht genau schauen wo der Fehler liegt, oder man tut sich imens leichter ;-)
 
Habs auch schon mit Fehlerausgabe probiert jedoch gibt es keine Fehler die angezeigt werden. Was das ganze für mich noch unerklärlicher macht. War sogar das erste was ich versucht habe ^^
 
Ist $content ein String oder INT?

und für die Fehlerausgabe würde ich:
PHP:
function mysql($sqldbhost, $sqldb, $sqldbuser, $sqldbpw)
        {
            $this->server = $sqldbhost;
            $this->db     = $sqldb;
            $this->acc    = $sqldbuser;
            $this->pw     = $sqldbpw;

            $connect = @mysql_connect($this->server, $this->acc, $this->pw);

            if ($connect) {
                @mysql_select_db($this->db);
                return true;
            } else {
                $this->dbError();
            }
        }

$this->dbError();
 
Zuletzt bearbeitet:
Is ein String :) hab den Fehler auch schon gefunden jetzt wo du es sagst ^^ es muss anstelle von

PHP:
$result = $dbconn->fetchArray("SELECT * FROM $modulestable WHERE content = $content");

so lauten

PHP:
$result = $dbconn->fetchArray("SELECT * FROM $modulestable WHERE content = '$content'");


EDIT: Danke vielmals :) hätte warscheinlich noch Stunden gesucht XD
 
Zuletzt bearbeitet:
Zurück