PHP: string 000 wird als 0 in DB gespeichert

nietaL

NGBler
Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
Hey Leute,

einen String, den ich vorher mit $var = '000'; definiert habe, möchte ich anschließend in eine Datenbank speichern. Das klappt in sofern, als dass er es zwar speichert aber mir zu mathematisch denkt. Geschrieben wird nämlich einfach nur 0. Dasselbe natürlich auch bei '001' oder '010'.

Interessanterweise wird beim Auslesen der Datenbank dann aber wiederum 000, 001 und 010 ausgelesen, denn dieses Codes sind letztendlich Namen von Bildern, die problemlos angezeigt werden. Erwartet habe ich aber eine Fehlermeldung, dass es ein Bild mit dem Namen 0.jpg nicht gibt. (kein Cache)

Mir scheint es, als sei es eine Art Anzeige-Option von phpmyadmin, ála 010=10; 001 = 1 usw... Kann das sein? :dozey:
 
Irgendwo werden die Variablen nicht als String, sondern als Integer (-artig) interpretiert.
Entweder hast du das im DB-Schema zu verantworten oder die dynamische Typisierung von PHP bereitet dir Probleme.
 
  • Thread Starter Thread Starter
  • #3
Ohne Mist. Ich komm mir vor, wie, wenn meine Mutter das Internet gelöscht hat. Ich habe NICHTS gemacht und plötzlich stehen die Strings wieder dreistellig drin .... :eek: Das Mit den Integern hatte ich ja auch vermutet. Aber $string = "000" kann doch kein Integer sein, oder?
 
  • Thread Starter Thread Starter
  • #5
Dynamische Typisierung? Nun gut, ich werde das 'mal noch weiter Beobachten. Vielleicht kann ich erkennen, an welcher Stelle aus 000 0 wird. Danke soweit erstmal.
 
Evtl. beim Insert, wo du die Query hoffentlich mit PDO zusammendrückst (und Bind), das du es nochmal durch strval($value) drückst.
 
Naja, übliche Stellen für derartige Konvertierungen von Variablen sind zum Beispiel Berechnungen aller Art, also wenn du zum Beispiel nen String "hochzählen" lassen willst um den Dateinamen zu erhöhen und diesen Wert zuweist.

Oder vielleicht statt eines "." ein "+" irgendwo hast um Strings zu verketten (falls das in PHP möglich ist).

Oder du hast das Problem das du in der Datenbank einen "Int" wert vorgegeben hast, aber den String "004" übergibst - der dann von der Datenbank, wie schon gesagt wurde, in "4" umgewandelt wird - also zum Integer anstelle eines String-Werts, in Mysql zum Beispiel Text/Tinytext/Varchar oder ähnlichem im Gegenzug zu Int werten wie Decima, Integer oder einer Fließkommazahl wie Float/Double.
 
Zuletzt bearbeitet:
Zurück
Oben