[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Dec 2009
    Beiträge
    43

    odbc_connect() mit PHP auf DB2

    Hallo,

    zu diesem Thema gibt es zwar schon viele Artikel, aber ich muss direkt nochmal vom Urschleim anfangen.
    Ich will mit PHP auf die DB2 unserer iSeries zugreifen, der ODBC Treiber ist installiert.
    Der System-DSN "AS400" existiert ebenfalls und die Userdaten stimmen auch.

    Ich hab mal eine einfache Verbindung erstellt:
    PHP-Code:
        $con odbc_connect('AS400''quser''qpwd'SQL_CUR_USE_ODBC) or die ("Verbindung fehlgeschlagen!");
        if(
    $con)
        {
          echo 
    "Verbindung erfolgreich!!!";
          
    odbc_close_all();
        } 
    Gestern kam es schonmal zur Meldung "Verbindung erfolgreich". Ich hatte jedoch die Funktion odbc_close_all() vergessen.
    Nach diesem erfolgreichen Versuch habe ich es kein weiteres Mal hinbekommen.
    Der Browser rödelt ewig lange rum und es kommt keine Fehlermeldung und kein Timeout.

    Liegt es etwa an dem vergessenen Funktionsaufruf?
    Wurde die alte Verbindung nicht getrennt (kann ich mir nicht vorstellen)?

    MfG watchdogg

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    hi,

    prüfe mal ob der lokale port as-database aktiv bzw. empfangsbereit ist.

    Code:
    Verbindungs-ID:                                                   
      Name des fernen Hosts . . . . . . . . . . . . :                 
        Ferne Internet-Adresse  . . . . . . . . . . :     *           
        Ferner Port . . . . . . . . . . . . . . . . :     *           
      Name des lokalen Hosts  . . . . . . . . . . . :                 
        Lokale Internet-Adresse . . . . . . . . . . :     *           
        Lokaler Port  . . . . . . . . . . . . . . . :     as-database 
      Zugeordnetes Benutzerprofil . . . . . . . . . :   QUSER         
    TCP-Programmierschnittstelleninformationen:                       
      Status  . . . . . . . . . . . . . . . . . . . :   Empfangsbereit
      Art der Verbindungsöffnung  . . . . . . . . . :   Passiv
    das vergessene close sollte egal sein.

    lg andreas

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    hast du schon versucht vom browser den cache + cookies zu löschen?

    du könntest auch eine verbindung über DSN zu starten, dort dann noch das trace aktivieren und schaun, was das protokoll sagt.

  4. #4
    Registriert seit
    Dec 2009
    Beiträge
    43
    Danke Andreas,

    ich bin nicht der iSeries-Profi sondern nur ab und zu der Operator, deshalb habe ich ein paar Fragen zu deinen Posts:

    1.Post:

    mit welchem Befehl komme ich zu diesem Bildschirm.

    2.Post:

    Ja, Cache und Cookies habe ich schon gelöscht- das war auch mein erster Gedanke.
    Wie macht man das mit der Verbindung über DSN und dem Trace.



    MfG watchdogg

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    @1:
    du gibst auf der befehlszeile NETSTAT ein
    auswahl 3
    mit der auswahl 5 bei " ... as-data > ..." bekommst du die details

    @2:
    in der systemsteuerung -> verwaltung -> datenquellen (ODBC)
    wenn du ein Client Access installiert und verwendet hast gibt es bei Benutzer-DSN einen eintrag QDSN_+System-IP.
    entweder verwendest du diesen DSN oder erstellst einen neuen.
    Auf jeden fall musst du dort in der konfiguration das trace einschalten.

    der code könnte dann so aussehen:
    PHP-Code:
    odbc_connect('DSN=QDSN_192.168.0.1''myuser''pwd'SQL_CUR_USE_ODBC
    für die syntax geb ich jedoch keine garantie ab, da ich mit php nicht viel zu tun habe.

    lg andreas

  6. #6
    Registriert seit
    Dec 2009
    Beiträge
    43
    @1

    Alles i.O. Empfangsbereit , passiv

    @2

    Ja, wir verwenden Client Access aber den Eintrag "QDSN_+IP" finde ich nicht
    Tracing ist auch aktiviert, schreibt aber keine Protokolldateien.

    Im Browser erhalte ich folgende Fehlermeldung:

    Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in C:\xampp\htdocs\as400\index.php on line 16
    MfG watchdogg

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    Über die ODBC-Verwaltung (Systemsteuerung->Verwaltung->Datenquellen) musst du einen DSN-Eintrag "AS400" erstellen (1. Parameter des odbc_connect).
    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

  8. #8
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    du kannst scheinbar den dsn direkt in der methode eintragen:

    PHP-Code:
    int odbc_connect  string $dsn  string $user  string $password  [, int cursor_type  ] ) 
    und beim erstellen des DSN musst du auch den richtigen treiber angegeben haben.
    DRIVER={Client Access ODBC Driver (32-bit)}

  9. #9
    Registriert seit
    Dec 2009
    Beiträge
    43
    Danke euch beiden,

    es geht jetzt. Ich kann mich verbinden.
    Habe ja geschrieben, dass es gestern bereits ging.
    Hatte mich zwischenzeitlich mal zum testen mit falschen Benutzerdaten angemeldet und siehe da - auf dem Server war ein kleines Fensterchen offen, wo drin stand, dass die Benutzerdaten falsch sind.

    Deswegen konnte ich mich nicht mehr verbinden. Schön blöd - ich hätte nur mal auf den Server schauen sollen.

    Sorry...

    MfG watchdogg

  10. #10
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    gut zu wissen, dass in solch einem fall php stecken bleibt.
    gibts da vlt. die möglichkeit eines monitor oder try?
    eine fehlermeldung sollte schon zum user gelangen können.

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    Beim odbc_connect gibt es sicherlich einen Paramter für "no prompt", so dass das Anmeldefenster nicht hochkommt und die Verbindung dann halt fehlschlägt.
    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

Similar Threads

  1. Duplex-Druck auf vorbedrucktem Papier
    By jgv in forum NEWSboard Drucker
    Antworten: 7
    Letzter Beitrag: 02-08-13, 09:28
  2. Zugriff auf DB2 UDB
    By Azaron in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 05-12-06, 13:42
  3. DB2 <-> SQL-Datenbank (XAL)
    By MKl. in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 07-08-06, 07:46
  4. Druckereinrichtung auf AS400?
    By stephanr1 in forum NEWSboard Drucker
    Antworten: 7
    Letzter Beitrag: 20-07-06, 14:00
  5. oxaion erfolgreich auf i5 getestet
    By ralfmh in forum Archiv NEWSboard Events
    Antworten: 1
    Letzter Beitrag: 07-10-04, 11:17

Berechtigungen

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