Ergebnisstring ist zu kurz!?

Jedimaster

Mitglied
Hallo Forum!

Bei Arbeiten an einer PHP-Applikation bin ich auf ein unerwartetes Problem gestoßen.
Mittels PHP generiere ich über ODBC SQL-Abfragen auf einem Datenbestand:

PHP:
$conn = odbc_connect("DBName",NULL,NULL);
$sql = "SELECT spalte FROM tabelle WHERE id = 'id001'";

$res = odbc_exec($conn, $sql);
$erg = odbc_result($res,1);

echo "<b>Ergebnis = </b>".$erg;
odbc_close_all();

In der Datenbank sind Richt-Text-Felder (mit teilweise über 15000-20000 Zeichen) enthalten. Frage ich ein solches ab, dann erscheint leider nicht der volle Inhalt im Ausgabe-String: Es wird bei 4095 Zeichen (inklusive Blanks) abgeschnitten.

Handelt es sich um ein Datenbankproblem?
Für meine Tests verwendete ich zwei Anbindungen:

1: MS Excel-ODBC Treiber auf einem Excel-File als Datenbank
2: NotesSQL-Treiber auf einer Lotus Notes Datenbank

Wenn ich mit MS Query die Daten von der NotesDB in Excel übertrage sind die Datenfelder übrigens vollständig..daher vermute ich, dass es eigentlich kein Problem mit der Datenbank sein kann.

Hat jemand einen Rat für mich? Wie kann ich den Fehler beseitigen oder umgehen?

Gruß,
JediMaster
 
Hallo Leutz!

Ich hab das Problem gelöst.

Eine ordnungsgemäße Ausgabe des gesamtes Feldes wird durch Einfügen folgender Codezeile vor odbc_result() erreicht:

PHP:
odbc_longreadlen($res, $length);

Diese Funktion steuert das Auslesen von Spalten mit LONG-Inhalten. Der Integer-Parameter $length gibt die Anzahl Bytes an, welche gelesen werden.


Alternativ gibt es auch die Möglichkeit den Parameter odbc.defaultlrl in der php.ini anzupassen. Er bestimmt die Anzahl Bytes, die aus einem LONG-Feld übergeben werden.
Standardmäßig ist die "long read length" auf 4096 Bytes beschränkt. (Daher die abgeschnittene Ausgabe ab dem 4095. Zeichen)


Gruß,
Jedimaster
 
Zurück