-
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 !!
-
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.
-
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!
-
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.
-
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
-
By stefanE in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 19-05-10, 12:28
-
By cami in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 27-08-06, 17:31
-
By jjagi in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 07-07-06, 08:29
-
By schreibr in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 27-07-01, 08:20
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks