keine Ergebnis per PDO-Zugriff (ODBC) aud MS SQL-Server von Linux

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • keine Ergebnis per PDO-Zugriff (ODBC) aud MS SQL-Server von Linux

    Hallo!

    Ich nutze zum Entwickeln einen Windows-Rechner mit XAMPP.
    Die Live-Umgebung ist ein WebServer unter Linux (Debian), von wo wir per ODBC auf eine MS SQL Datenbank zugreifen.

    Jetzt funktioniert auf meiner Entwicklungs-Umgebung alles, aber nach dem Upload auf den WebServer bekomme ich ein leeres Ergebnis zurück.

    PHP Code:
    $DB = new PDO("odbc:".$odbcVERB$odbcUSER$odbcPASS);

    $SQL 'SELECT ID, bereich1, bereich2 FROM Tabelle WHERE art=:art ORDER BY nummer ASC';

    $result $DB->prepare($SQL);
    $paramenter = array("art" => $art);
    $result->execute($paramenter);
    $alles $result->fetchAll(); 
    Wie gesagt auf meiner Entwicklungsumgebung bekomme ich als Ergebnis die korrekten 8 Einträge, aber auf dem WebServer bekomme ich nichts zurück?

    Achja ... auf beiden System (Entwicklung, Live) ist die DSN korrekt eingerichtet.
    dies schrieb
    derSESO

  • #2
    Mal in den Error-Logs nachgeschaut? Ich tippe auf das übliche Problem mit der Groß- und Kleinschreibung. Linux ist case-sensitive, Windows nicht.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Comment


    • #3
      Also sowohl der Name des DSN und als auch die Spaltennamen und der Tabellename sind korrekt bzgl. der Groß-Kleinschreibung.
      dies schrieb
      derSESO

      Comment


      • #4
        http://php.net/manual/en/pdo.error-handling.php
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Comment


        • #5
          Wenn es Fehler geben würde, hätte ich es geschrieben.
          Ich bekomme als Ergebnis einfach die Antwort, das nichts gefunden wurde.
          Was allerdings eben nicht sein kann.
          dies schrieb
          derSESO

          Comment


          • #6
            Wenn ich mittels odbc_connect() und odbc_exec() usw. abfrage, bekomme ich meine Ergebnisse.
            dies schrieb
            derSESO

            Comment


            • #7
              was sagt denn print_r(PDO::getAvailableDrivers());?

              Peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Comment


              • #8
                Originally posted by Kropff View Post
                was sagt denn print_r(PDO::getAvailableDrivers());?

                Peter
                Also die Antwort auf dem Live-System lautet:
                Array ( [0] => mysql [1] => odbc )

                Auf meinem Test-System:
                Array ( [0] => mysql [1] => odbc [2] => sqlite )

                Wobei das "sqlite" nichts beeinflussen sollte - ich nutze kein "sqlite".


                Habe jetzt mit folgender Zeile:
                PHP Code:
                $test $DB->query('SELECT TOP 5 * FROM TBA_GESAMT')or die(print_r($DB->errorInfo())); 
                folgende Antwort auf dem Live-System:
                Code:
                Array ( [0] => 00000 [1] => 0 [2] => (SQLExecute[0] at /build/buildd-php5_5.2.0+dfsg-8+etch16-i386-uC66is/php5-5.2.0+dfsg/ext/pdo_odbc/odbc_stmt.c:133) [3] => 00000 ) 1
                Auf meinem Test-System bekomme ich 5 korrekte Ergebnisse.
                Last edited by derSESO; 10-07-2015, 06:34.
                dies schrieb
                derSESO

                Comment


                • #9
                  Welchen Inhalt hat $test?

                  Hast du bei PDO auch den Error-Mode auf PDO::ERRMODE_EXCEPTION gesetzt?

                  http://php.net/manual/en/pdo.error-handling.php
                  Last edited by h3ll; 10-07-2015, 17:47.

                  Comment


                  • #10
                    Originally posted by h3ll View Post
                    Welchen Inhalt hat $test?

                    Hast du bei PDO auch den Error-Mode auf PDO::ERRMODE_EXCEPTION gesetzt?

                    PHP: Errors and error handling - Manual
                    Also...
                    - $test beinhaltet nichts - bekomme ja per "or die()" die Meldung ausgegeben
                    - den Error-Mode habe ich hinzugefügt -> keine Veränderung
                    dies schrieb
                    derSESO

                    Comment


                    • #11
                      Originally posted by derSESO View Post
                      Also...
                      - $test beinhaltet nichts - bekomme ja per "or die()" die Meldung ausgegeben
                      Was ist "nichts"?

                      NULL?
                      FALSE?
                      ""?
                      0?
                      []?

                      Comment


                      • #12
                        Na eben nichts ... "".
                        dies schrieb
                        derSESO

                        Comment


                        • #13
                          "" ist ein leerer String und nicht "nichts". Das wäre sehr ungewöhnlich. Bist du dir sicher? Warum zeigst du nicht einfach die Ausgabe?

                          Comment


                          • #14
                            Also...

                            Die Query wird durch das "or die()" ja abgebrochen.
                            Das bedeutet, das kein Ergebnis zurück gegeben wird, weil etwas nicht stimmt.

                            Entferne ich das "or die()" am Ende, dann steht in $test nichts drin.
                            Normalerweise müsste die Query ja ein Array/Objekt zurück geben.

                            Ich habe jetzt mal ein "var_dump($test)" ausgegeben.
                            Ergebnis: bool(false)
                            dies schrieb
                            derSESO

                            Comment


                            • #15
                              Originally posted by derSESO View Post
                              Ich habe jetzt mal ein "var_dump($test)" ausgegeben.
                              Ergebnis: bool(false)
                              Also doch nicht "nichts", sondern FALSE. Schwere Geburt, aber endlich ist da Klarheit.

                              Ich tippe darauf, dass irgendwas mit der Serverkonfiguration nicht passt, aber das wirst du dir vermutlich auch schon gedacht haben. Schon mal den Serveradministrator darauf angesprochen?

                              Funktioniert wenigstens ein "SELECT 1"?

                              Comment

                              Working...