[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2010
    Beiträge
    3

    Umlaute-Problem beim PHP-Zugriff auf SLES10 via ODBC

    Hallo, ich habe auf einem Linux-System SLES10 einen iSeries-ODBC-Treiber wie folgt eingerichtet.

    [DWH_APFEL]
    Description = iSeries Access ODBC Driver
    Driver = iSeries Access ODBC Driver
    System = 10.1.1.3
    UserID =
    Password =
    Naming = 1
    DefaultLibraries = APFEL
    Database =
    ConnectionType = 0
    CommitMode = 0
    ExtendedDynamic = 0
    DefaultPkgLibrary = QGPL
    DefaultPackage = A/DEFAULT(IBM),2,0,1,0,512
    AllowDataCompression = 1
    MaxFieldLength = 32
    BlockFetch = 1
    BlockSizeKB = 32
    ExtendedColInfo = 0
    LibraryView = 0
    AllowUnsupportedChar = 0
    ForceTranslation = 0
    Trace = 0

    Der Zugriff klappt prima. SELECT und UPDATES, sowie INSERTS funktionieren. Jedoch - sobald ich in einem Textfeld ein Umlaut ÄÖÜß enthalten habe, wirft das SQL folgenden Fehler aus:

    Warning: odbc_exec(): SQL error: [unixODBC][IBM][iSeries Access ODBC Driver]Invalid string or buffer length., SQL state S1090 in SQLExecDirect in /srv/www/htdocs/dateiname.php on line 104

    Identisches insert-SQL direkt auf der DB2 ausgeführt klappt tadellos. Ich vermute daher ein Problem beim ODBC-Treiber. Wer weiß Rat?! Danke !!

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Kommt nun wieder mal darauf an, wie du die SQL's zusammenbaust.
    Wenn du mit Parametermarkern arbeitest dürftest du eigentlich keine Probleme haben.
    Also:
    update myfile set f1=?, f2=?, ...
    where k1=? and k2=? ...
    insert into myfile (f1, f2, ...) values (?, ?, ...)

    Strickst du die SQL's selber immer zusammen, kann es zu diesen Problemen kommen.
    Ich denke, PHP arbeitet ebenso in Unicode, so dass die Strings als Unicode abgegeben werden. Die SQL's müssen jedoch in SBCS umgesetzt werden. Wenn du nun hier (wie so oft) auf der AS/400 bzw. Datei keine CCSID (Systemwert QCCSID=65535) hast kann es hier zu Umsetzungsproblemen kommen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Nov 2010
    Beiträge
    3
    Dank für's Feedback, das ich in Hinblick auf mein Problem nicht als Problemlösung umsetzen kann. Womöglich weil ich die Antwort nicht verstehe?!

    1) Na klar ist das SQL ist im Programmcode zusammengesetzt. Aber auch ein ganz einfach als String ohne Parameter übgebenes UPDATE führt zu dem Fehler. Bsp.:
    $dbconn = odbc_connect($dbname,$username,$password) or die("Error!");
    $result = odbc_exec($dbconn, "update ANFORDERUNGEN set asp = 'ä'");

    2) Ich habe mir über den iSeries-Navigator die Tabellendefinition angeschaut und bei den betroffenen Varchar-Feldern die CCSID von 237 auf 65535 geändert. Ohne Erfolg.

    Mit der Bitte um Konkretisierung der Problemlösung - oder weiteren/anderen Hinweisen, mit denen ich die Sache retten kann. Vielen Dank!

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wie gesagt, du musst mit CommandObjekten und Parametermarkern arbeiten.
    Wie das genau mit PHP geht kann ich dir nicht sagen.
    Dein SQL sähe dann so aus:

    update myfile set field = ?
    where key = ?

    Für jedes "?" musst du einen Parameter definieren, das Statement preparen, den Parametern den Wert zuweisen und dann ausführen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Nov 2010
    Beiträge
    3

    Talking

    Hallo,

    $umlaute1 = "äü";
    $umlaute2 = "öß";
    $stmt = odbc_prepare($dbconn, "update tablename set fieldname1 = ?, fieldname2 = ?");
    $result = odbc_execute($stmt, array($umlaute1, $umlaute2));
    ?>

    ....funktioniert wunderbar!! Ganz herzlichen Dank !!!!

Similar Threads

  1. via Delphi auf ADO ODBC auf AS400 zugreifen
    By stefanE in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 19-05-10, 12:28
  2. Antworten: 3
    Letzter Beitrag: 27-08-06, 17:31
  3. Datum überlebt ODBC Transfer auf Excel nicht
    By jjagi in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 07-07-06, 08:29
  4. Externer Zugriff via Leitung auf AS400
    By schreibr in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 27-07-01, 08:20
  5. Zugriff auf AS/400-Ordner nicht möglich
    By Sven Keiselt in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 30-01-01, 12:33

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •