Methode eines Objekts...
Uhfe
- php
Guten Morgen,
habe mich selbst von der Notwendigkeit überzeugt mal ein wenig in Richtung OOP zu gehen.
Bin gerade bei den ersten Schritten. Habe mir eine Klasse angelegt, die einen MS-SQL Server abfragen soll.
Funktioniert -rudimentär zwar noch- soweit.
Frage:
ich habe eine Methode "query_execute"
Die rufe ich einmal auf mit dem Statement 'select count(*) from ....')
diesen Wert gebe ich zurück.
$count = $db->query_execute('select count(*) from ......');
Danach wollte ich die Methode mit einem neuen Query nochmal aufrufen.
$ergebnis = $db->query_execute('select * from cs2.csa20020');
Das funzt aber nicht. Einzeln funktionieren die Methodenaufrufe. Soll das so sein? Wenn ja warum?
Thx
Uhfe
Hi Uhfe,
Ohne die Klasse zu kennen, wird dir sicher niemand wirklich helfen können.
Man kann nur Vermutungen anstellen.
Poste mal den Quelltext der Klasse, bzw. nur die funktion query_execute aus der Klasse.
MfG
Hai,
//Methode query_execute
function query_execute($query)
{
$this->result = odbc_exec($this->link, $query, $links);
$this->string .= 'Der Query wurde ausgeführt<br>';
if ($this->result){
$this->string .= 'Resultset<br>';
return $this->result;
}
else {$this->string .= 'Kein Resultset';}
}
Der String dient mir nur zur Fehleranalyse. Wie geschrieben, wenn die Methode nur einmal aufgerufen wird, funzt sie.
Hi Uhfe,
Ohne die Klasse zu kennen, wird dir sicher niemand wirklich helfen können.
Man kann nur Vermutungen anstellen.Poste mal den Quelltext der Klasse, bzw. nur die funktion query_execute aus der Klasse.
MfG
Was für einen Fehler bekommst du denn?
Lass dir mal den ODBC Fehler ausgeben.
function query_execute($query)
{
$this->result = odbc_exec($this->link, $query, $links);
$this->string .= 'Der Query wurde ausgeführt<br>';
if ($this->result)
{
$this->string .= odbc_errormsg($this->link);
return $this->result;
}
else
{
$this->string .= odbc_errormsg($this->link);
}
}
MfG
Hallo,
Warning: odbc_exec() [function.odbc-exec]: SQL error: l)Ð@, SQL state 00000 in SQLExecDirect in /home/intranetuser/www/ssl/include/classes/msSql.php on line 28
Was für einen Fehler bekommst du denn?
Lass dir mal den ODBC Fehler ausgeben.function query_execute($query)
{
$this->result = odbc_exec($this->link, $query, $links);
$this->string .= 'Der Query wurde ausgeführt<br>';
if ($this->result)
{
$this->string .= odbc_errormsg($this->link);
return $this->result;
}
else
{
$this->string .= odbc_errormsg($this->link);
}
}MfG
Tach auch,
Warning: odbc_exec() [function.odbc-exec]: SQL error: l)Ð@, SQL state 00000 in SQLExecDirect in /home/intranetuser/www/ssl/include/classes/msSql.php on line 28
Das ist ja mal ne ziemlich nichts sagende Fehlermeldung ;)
Ich schätze dein Query ist nicht ganz korrekt oder so. Hab leider keinen Plan von MS-SQL :(
Denke nicht das es was mit PHP zu tun hat.
MfG
Hmmh,
$ergebnis = $db->query_execute('select * from cs2.csa20020');
das Select-Statement ist so ziemlich sicher. Zumal wie erwähnt. Wenn ich den count vorher weglasse bekomme ich ja ein Resultset.
Ich habe so das Gefühl, dass ich eine Methode eines Objects nicht zweimal aufrufen darf....
Grüße
Tach auch,
Warning: odbc_exec() [function.odbc-exec]: SQL error: l)Ð@, SQL state 00000 in SQLExecDirect in /home/intranetuser/www/ssl/include/classes/msSql.php on line 28
Das ist ja mal ne ziemlich nichts sagende Fehlermeldung ;)
Ich schätze dein Query ist nicht ganz korrekt oder so. Hab leider keinen Plan von MS-SQL :(
Denke nicht das es was mit PHP zu tun hat.MfG
Hi,
Ich habe so das Gefühl, dass ich eine Methode eines Objects nicht zweimal aufrufen darf....
Doch natürlich, sonst wäre ja der Sinn einer Klasse völlig dahin.
odbc_exec($this->link, $query, $links)
Ich habe mir odbc_exec gerade nochmal angeschaut, die funktion erwartet keinen 3.ten Parameter.
Zumal wie erwähnt. Wenn ich den count vorher weglasse bekomme ich ja ein Resultset.
Und was passiert wenn du den count danach abfragst?
MfG
Also,
habe das Problem jetzt dermaßen gelöst, dass ich erst die Anzahl abfrage, den Connect schließe und danach einen neuen Connect mit neuem query starte.
Funzt...
Ciao
Uhfe