Ankündigung

Einklappen
Keine Ankündigung bisher.

ODBC

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ODBC

    Hi,

    ich steh etwas auf der Leitung. Ich versuche gerade per php durch ODBC auf eine FileMaker Datenbank zuzugreifen (MacOSX).
    Die ODBC-Verbindung klappt, zumindest zeigt mir das der iODBC-Administrator an.

    Ich versuch nun ganz einfach mit odbc_connect auf diese Verbindung zuzugreifen. Die Angaben stimmen alle, sind mindestens ein dutzend Mal überprüft.

    Folgendermassen sieht das einfache Script aus
    PHP-Code:
    <?php
    putenv
    ("ODBCINI=/Library/ODBC/odbc.ini"); //odbc.ini contains your DSNs. 

    odbc_connect("Handelswaren"""""SQL_CUR_USE_ODBC);
    ?>
    Nun, das Problem ist jetzt folgendes. Ich bekomm nicht irgendeinen Fehler sondern wenn ich das Script aufrufe bekomm ich den Fehler:"Netzwerkverbindung unterbrochen".
    Ich hab keine Ahnung an welchem Ort ich den genauen Fehler suchen muss, hat einer von euch zufälligerweise eine Idee? PHP-Version ist übrigens 4.3.11.

    Ich bin für jede Hilfe dankbar.
    Viele Grüsse aus der Schweiz,

    jonas

  • #2
    Dieses Problem hab ich mittlerweile gelöst, jetzt hab ich aber ein anderes.

    Ich hab eine Datenbank mit einer Tabelle und 2 Feldern, einem Zahlenfeld und einem Textfeld.

    Ich will nun alle Daten aus diesem Textfeld.

    Folgendes ist mein Code

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);
    putenv("ODBCINI=/Library/ODBC/odbc.ini");
    $arrFM = array();
    $conFM odbc_connect("test""Admin""") or die("ODBC-Verbindung fehlgeschlagen");
    $x=0;
    $sql "SELECT * FROM dns";

    $res odbc_exec($conFM$sql) or die('abfrage falsch');
    odbc_longreadlen($res32000);



    while(
    odbc_fetch_row($res))
    {
          for (
    $y 1$y <= odbc_num_fields($res); $y++)
        {
            
    $arrFM[$x][$y] = odbc_result($res$y);
            echo 
    $arrFM[$x][$y] . "-";
        }
        echo 
    "
    "
    ;
        
    $x++;
    }
    ?>
    Nun zum Problem. Ich habe in der Datenbank 42 Datensätze. Mit diesem Code erhalte ich ich für die ersten 8 Datensätze fürs Zahlenfeld 0 und fürs Textfeld ''. Die restlichen kommen dann korrekt. Wenn ich hinten einen weiteren Datensatz anhänge kommen einfach 9 Datensätze quasi leer.

    Wenn ich die Abfrage via eines Tools mache (dass auch durch ODBC die Befehle sendet) erhalte ich die Daten korrekt, also daran kanns nicht liegen.
    Hat jemand eine Idee an was das liegen könnte? Irgendeine Option in der php.ini von wegen Speicher und so?

    Viele Grüsse,

    jonas

    Kommentar


    • #3
      Na du solltest dir deinen Code nochmal anschauen weil durch ein fetch_row & result über die gleiche Anfrage müssten sich die Ergebnisse "überlagern".

      Sprich: Deine Schleife ist falsch aufgebaut !

      Würde ich mal jetzt so zunächst tippen ! .. Muss aber nicht sein ..

      Kommentar


      • #4
        Ähm, ich steh glaub etwas auf der Leitung, aber das PHP-Manual sagt mir folgendes:

        Nachdem odbc_fetch_row() aufgerufen wurde, können die Felder dieser Zeile mit odbc_result() genutzt werden.

        Kommentar


        • #5
          http://de2.php.net/manual/en/functio...-fetch-row.php

          das sagt das sicherlich nicht ...

          Weil du per while-Schleife --> odbc_fetch_row($res) immer wieder aufrust !

          PHP-Code:
          <?php

          while($row=odbc_fetch_row($res))
          {
           echo 
          $row[0].$row[1];
          }

          ?>
          so müsste das vvlt fr dich verständlicher werden ... Müsste glaub ich klappen ..

          Kommentar


          • #6
            Ich bin ja manchmal doch etwas doof, aber

            After odbc_fetch_row() is called, the fields of that row can be accessed with odbc_result().

            Ein Vorschlag geht nicht, sprich ich bekomme keine Resultate. Die Query stimmt 100%-ig.
            Ich hab wohl schon alles, was bei irgendeinem Befehl bei den User Contributions steht irgendwie probiert, aber funktioniert hat nix.

            Kommentar


            • #7
              Ich hab noch was rausgefunden:

              Wenn ich die Abfrage etwas abändere und nur

              SELECT id FROM dns

              nehme kommen alle Daten Problemlos bei mir an.
              Kann es sein, dass das Textfeld zu viel Speicher frisst?

              Kommentar

              Lädt...
              X