Fehler in MySQL-Klasse

cofter

Erfahrenes Mitglied
Ich bin dabei mir eine kleine sql Klasse zu schreiben.
Wenn ich jetzt $this->row einsetze um die spalte zu selektieren bringt er mir einen Fehler der mir unerklärlich ist. Wenn ich anstatt dem $this->row ein * einsetze bringt er den Fehler nicht.
Die Spalte existiert 100% in der Tabelle.

PHP:
function qry_table()
	{
		$this->table_qry = mysql_query("SELECT $this->row FROM $this->table");
		$this->num_row = mysql_num_rows($this->table_qry);
		echo "Einträge: ".$this->num_row."<br /><br />";
		return $this->table_qry;
		return $this->num_row;
	}

Der Fehler: arning: mysql_result() [function.mysql-result]: Bad column offset specified in C:\AppServ\www\oop5\class.php on line 90

Zeile 90 ist genau diese: $this->table_qry = mysql_query("SELECT $this->row FROM $this->table");
Anbei auch die ganze Klasse.

PHP:
class read_table 
{
	private $table;
	private $row;
	private $sort;
	private $stat;

	function set_table($table)
	{
		$this->table = $table;
		echo "<br />Table: ".$this->table."<br />";
		return $this->table;
	}
	
	function set_row($row)
	{
		$this->row = $row;
		echo "<br />Row: ".$this->row."<br />";
		return $this->row;
	}
	
	function qry_table()
	{
		$this->table_qry = mysql_query("SELECT $this->row FROM $this->table");
		$this->num_row = mysql_num_rows($this->table_qry);
		echo "Einträge: ".$this->num_row."<br /><br />";
		return $this->table_qry;
		return $this->num_row;
	}
	
	function table_out()
	{	
	
		for ($i=0; $i < $this->num_row ;$i++)
		{
		$this->ausgabe = mysql_result($this->table_qry,$i,$this->num_row);
		echo nl2br($this->ausgabe)."<br /><br />";
		}
	}
}

mfg
Cofter
 
Zuletzt bearbeitet:
versuch mal $this->table bzw. $this->row unter ' zu stellen.
Kann auch sein das du ` nehmen musst.

Greetz woni
 
Du kannst nicht zwei returns in einer Funktion haben ;)

Code:
return $this->table_qry;
return $this->num_row;
 
PHP:
mysql_query("SELECT `".$this->row."` FROM `".$this->table."`");
Wenn es nicht die Lösung ist, dann lasse dir mal die Variablen ausgeben. Evt steht etwas falsches drin. Sagt ja auch schon die Fehlermeldung. Irgendetwas pass MySql nicht an deinen Variablen bzw den Werten.

Außerdem hast du 2 returns. Eigentlich brauchst du gar nichts zurück geben. ein "return true;" langt auch. Die Werte befinden sich ja in Klassenvariablen, auf die du doch immer zugreifen kannst.
 
Zuletzt bearbeitet:
fanste hat gesagt.:
PHP:
mysql_query("SELECT `".$this->row."` FROM `".$this->table."`");
Wenn es nicht die Lösung ist, dann lasse dir mal die Variablen ausgeben. Evt steht etwas falsches drin. Sagt ja auch schon die Fehlermeldung. Irgendetwas pass MySql nicht an deinen Variablen bzw den Werten.

Außerdem hast du 2 returns. Eigentlich brauchst du gar nichts zurück geben. ein "return true;" langt auch. Die Werte befinden sich ja in Klassenvariablen, auf die du doch immer zugreifen kannst.

Hat leider nichts gebracht.
In den Vars sind auch die richtigen Werte.
Wenn ich das ganze mit einer While-Schleife und mysql_fetch_array bzw mysql_fetch_object mache gehts, aber das ist nich das was ich möchte. :(
 
Schreib mal hinter dein mysql_query() noch ein "or die(mysql_error())". Kommt irgendeine Fehlermeldung?
 
Wie heisst denn die Spalte, die du angibst? Schreib mal hier rein, wie du set_row aufrufst..
 
Oder mal allgemein deinen Ablauf zur Verwendung der Klasse. Also vom inizialisieren bis zum Ende der datei.
 
@fanste
Nein es kommt komischweise kein Fehler. :confused:

@xCondoRx

PHP:
        	$tVar = new read_table();
		$tVar->set_table("buecher");
		$tVar->set_row("bookname");
			
		$tVar->qry_table();
		$tVar->table_out();
Ich hoffe ihr könnt mir helfen.
Vielleicht hat noch jemand ein Buchtipp zu PHP5 und OOP?!

mfg
Cofter
 
Ich glaube, ich habe den Fehler. Du hast due Variable num_row nicht als Klassenvariable deklariert. Es fehlt oben also noch ein
PHP:
private $num_row;
 
Zurück