Seite 1 von 1

OOP MySQL Klasse, kriege Fehlermeldung

Verfasst: 24.06.2009 19:14
von Ambience
Hallo Liebe Community,

ich bin grad im Begriff ein wenig in OOP zu finden, und schreibe mir grad mal ein kleines OOP Gästebuch mit sprachsystem, templatesystem und mysql klasse.

Ich bekomme bei meiner Klasse immer diesen Fehler:
Strict Standards: Resource ID#9 used as offset, casting to integer (9) in C:\xampp\htdocs\Book\includes\class\mysql.php on line 65


Die definierten Klassenvariablen:

Code: Alles auswählen

class mysql
{
  private $db_connect_id;
  private $query_result;
  private $row = array();
  public $num_queries = 0;
Die Funktion dazu ist:

Code: Alles auswählen

public function sql_fetchrow($query_id)
	{
			$this->row[$query_id] = mysql_fetch_array($query_id, MYSQL_ASSOC);
			return $this->row[$query_id];
	}
edit: Eine Abfrage:

Code: Alles auswählen

$sql = 'SELECT *
  FROM ' . CONFIG_TABLE;
  
$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))
{
	$book_config[$row['config_name']] = $row['config_value'];
}
Weiß jemand wieso dieser Fehler auftritt bzw. was ich ändern muss?

Re: OOP MySQL Klasse, kriege Fehlermeldung

Verfasst: 24.06.2009 20:04
von Mahony
Hallo
Schau mal hier http://www.traum-projekt.com/forum/19-t ... teger.html


Grüße: Mahony

Re: OOP MySQL Klasse, kriege Fehlermeldung

Verfasst: 24.06.2009 20:33
von Ambience
Nabend,

wenn ich jetzt intval(); benutze, kriege ich einen mysql error, das die resource_id nicht valid ist.

Wie kann ich jetzt dieses beheben? Code ist der gleiche, nur bei der methode mit intval(); halt.


Dankeschön

Re: OOP MySQL Klasse, kriege Fehlermeldung

Verfasst: 24.06.2009 20:48
von Mahony
Hallo
Was passiert wenn du

Code: Alles auswählen

settype($query_id, 'integer'); 
verwendest?



Grüße: Mahony

Re: OOP MySQL Klasse, kriege Fehlermeldung

Verfasst: 24.06.2009 21:07
von Ambience
das gleiche, der kann bei der while abfrage nichtmehr auf die id zugreifen. ohne dem ganzen würds ja gehen, aber ich riege halt die E_STRICT meldung.

Re: OOP MySQL Klasse, kriege Fehlermeldung

Verfasst: 24.06.2009 22:17
von Pyramide
Du darfst die Konvertierung nach int natürlich nur dort machen, wo du den Wert als Array-Index verwendest - denn danach ist es ja keine gültige MySQL-Resource mehr.

Übrigens ist deine MySQL-Klasse kein OOP, sondern nur "Funktionen in Klassen gruppieren" (so wie phpBB es macht).

Re: OOP MySQL Klasse, kriege Fehlermeldung

Verfasst: 24.06.2009 22:27
von Ambience
und wie schaut das ganze dann in OOP aus? Das Tut wonach ich gehe: Klick


Wie krieg ich das mit der resource dann anders geregelt? Ich weiß das die resource dann nichtmehr vorhanden ist, aber laut dieser seite soll man E_STRICT ins error_reporting(); aufnehmen, damit man am ende sauberen code hat. Das habe ich gemacht, aber ich weiß jetzt auf anhieb nicht, wie ich das jetzt beheben kann.

Mit freundlichen Grüßen
Ambience

Re: OOP MySQL Klasse, kriege Fehlermeldung

Verfasst: 24.06.2009 22:51
von Pyramide
Objektorientiert wäre es z.B. so wie mit MySQLi: http://de.php.net/manual/de/mysqli-resu ... y.examples

Wesentlicher Unterschied zur Prozeduralen Programmierung ist, dass z.B. die query-Methode ein result-Objekt zurückgibt, welches dann wiederum Methoden bereitstellt.

Re: OOP MySQL Klasse, kriege Fehlermeldung

Verfasst: 24.06.2009 23:14
von Ambience
Ok, Vielen Dank. Werde es morgen abend nochmal bisschen umschreiben. Will unbedingt mehr von OOP wissen und OOP richtig anwenden, kennst du da evtl. noch ein paar wissenswerte links, dokus, tuts die du empfehlen könntest? Hatte bisher eigentlich gedacht, dass diese funktionssammlungen in klassen schon OOP wäre. Wie ich merke, habe ich da wieder was neues vor mir.

edit: Da ich mein gästebuch oop schreiben will und nur auf php5 laufen soll, wäre dann mysqli und sqlite3 genau das richtige für mich, oder?

Mit freundlichen Grüßen
Ambience