phpbar.de logo

Mailinglisten-Archive

[php] phplib7.2 mit php 3_0_14 und mssql iis und nt

[php] phplib7.2 mit php 3_0_14 und mssql iis und nt

Ulf Wendel UW_(at)_NetUSE.DE
Thu, 20 Jan 2000 20:48:43 +0100


Oliver Roßbruch wrote:
> 
> hi,
> 
> hat jemand obiges mal installiert?
> ich habe große probleme die mssql mit phplib ans laufen zu bringen, da eine
> funktion (mssql_affected_rows())
> weggefallen ist und die phplib wohl diese benötigt.
> der rest funktioniert gar wunder prächtig obwohl ich ms sch..... finde :)
> kann mir jemand helfen?

Hallo Oliver, 

das Problem war mir unbekannt. Ich habe eine Nachricht an die
PHPLIB User und Developer Liste geschrieben.
Ich kann der Empfehlung von Egon nur folgen, benutze ODBC. 

Die PHPLIB verwendet eine mehrstufige Abstraktion zum Zugriff auf
Sessiondaten. Dies hat den großen Vorteil, daß anders als bei
PHP4 die Anzahl der Speichermedien (theoretisch) unbegrenzt ist.
So können die Sessiondaten in einer SQL Datenbank, im Shared
Memory, als DBM-File und im Ldap gespeichert werden. 

db_mssql.inc und CT_Sql scheinen bei Deiner Konfiguration
verwendet zu werden. In db_mssql.inc wird die Funktion
affected_rows() definiert, wobei auf eine nicht existierende
Funktion zurückgegriffen wird.

function affected_rows() {
 return mssql_affected_rows($this->Query_ID);
}

ct_sql.inc ruft in der Funktion ac_store() affected_rows() auf,
um zu prüfen oder das Anlegen (INSERT) neuer Sessiondaten
erfolgreich war:

if (  $this->db->affected_rows() == 0 
      && !$this->db->query($iquery))  {
        $ret = false;
   }

session.inc wiederum benutzt ac_store() in freeze() Sessiondaten
zu speichern. Spätestens dort wird eine Fehlermeldung produziert.

Ein Workaround könnte darin bestehen die Funktion affected_rows()
in db_mssql.inc zu verändern:

function affected_rows() {
 return 1;
}

Damit sollte das Session Management keine Fehler mehr
produzieren. Eine richtige Lösung ist es jedoch nicht. Wer in
alter Gewohnheit $db->affected_rows() aufruft wird verwirrt sein,
warum nur ein Eintrag verändert wurde, obwohl doch mehrere
gelöscht wurden...

Das MS-SQL Interface ist einfach nicht der Hit, da kann auch die
schönste PHPLIB nichts machen.

Ulf

-- 
Ulf Wendel
NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany
Fon: +49 431 386435 00  --  Fax: +49 431 386435 99


php::bar PHP Wiki   -   Listenarchive