Hallo Forum!
Ich habe ein PHP-Skript geschrieben, wo mittels PDO Daten aus einer MySQL Datenbank geholt und dann weiterverarbeitet werden. Lokal am Laptop mit XAMPP hat das problemlos funktioniert. Als ich das Ganze dann auf den richtigen Server hochgeladen und die Seite dann über das Internet aufgerufen habe, kam es aber zu einer Fehlermeldung.
Die Daten erhalte ich im Skript mit folgender Methode:
$this -> _O_handler -> fetchAll(PDO::FETCH_OBJ);
Mein Ergebnis ist also ein Array mit Objekten, deren Eigenschaften den Inhalten der Datenbankfelder entspricht.
Nun bin ich längere Zeit gesessen, bis ich herausgefunden habe, wo bei meinem Webspace das Problem liegt. Und ich weiß es jetzt. Der ID Wert des Datensatzes landet lokal als String in der Verarbeitung, während die ID am richtigen Server als Integer geliefert wird. (Also als der Variablentyp, der ja auch im Datenbankfeld für die ID eingetragen ist.)
Zum Fehler ist es deshalb gekommen, weil eine weiterverarbeitende Funktion einen String als übergebenen Wert erwartet und deshalb kam es zu diesem Type Error. Ich habe das ganz einfach gelöst, in dem ich die Werte aus der Datenbank vor der Weiterverarbeitung mit strval() bearbeite.
Mein Problem konnte ich somit lösen. Mich würde jetzt allerdings trotzdem interessieren, wieso die ID lokal mit XAMPP als String kommt und bei der Verarbeitung am Live Sever als Integer. Semantisch richtiger ist ja die 2. Variante, nachdem die ID ja auch als Integer in der Datenbank gespeichert ist.
Kann mir vielleiht jemand diese2 verschiedenen Settings erklären? Kann man sagen, dass die String Variante „falsch“ ist? Oder was passiert da bei XAMPP?
Liebe Grüße
Der Verzweifelnde