Wie Integer leer überegeben, automatisch 0?

coderlein

Benutzer
Beiträge
8
Hallihallo liebe Gemeinde,

bin neu mit hier und in PostgreSQL und habe bis jetzt MySQL benutzt. Dort kann ich mit PHP an ein Integerfeld einen leeren Wert übergeben und es klappt ohne Fehlermeidung und der Datenbankeintrag erfolgt trotzdem. Wie geht das bei PostgreSQL? Habe alles probiert und bekomme es nicht hin! Immer Fehler: : ungültige Eingabesyntax für ganze Zahl: ...

Kann ich den table so erstellen, dass bei fehlemden Wert automatisch eine 0 benutzt wird?

Freue mich auf Hilfe!

Viele Grüße
Coderlein
 
Werbung:
Ja, ich habe einen Insert bei dem nur einige Werte gefüllt sind und manche leer. Wenn es sich bei den Leeren um Integer, smallint oder timestamp handelt, komt der Fehler. So ein Problem hatte ich bei MySql noch nie. Bei Update passoert mir das Selbe.
 
Hier ein Beispiel:

Variable $status ist leer und für ein Integerfeld ...

$query = "UPDATE table set
email = '$email',
status = '$status'
WHERE id='$id'";

Fehler: ungültige Eingabesyntax für ganze Zahl
 
Prüfe in PHP, was die Variablen enthalten, und reagiere passend. Eingabeprüfung und so...

Zur Info: PostgreSQL hat sich bis Version 8.2 ähnlich verhalten wie MySQL, in 8.3 wurden aber solche implizieten Casts entfernt, da es schlicht gegen Regeln des sauberen Programmierens verstößt. Siehe auch: Peter Eisentraut's Blog: Readding implicit casts in PostgreSQL 8.3

Dort steht auch, wie man das wieder erreichen kann, daß PG so tut, als wäre '' = 0, oder NULL. Aber, wie gesagt, mache es richtig in PHP, prüfe da die Eingaben. Bei einem leeren Feld kannst Du auch NULL übergeben:

Code:
andreas@[local]:5432/test*# create table x(i int);
CREATE TABLE
andreas@[local]:5432/test*# insert into x values (NULL);
INSERT 0 1
andreas@[local]:5432/test*# select * from x;
 i
---
 
(1 row)

andreas@[local]:5432/test*#


Grüße von der Insel Rügen ...
 
Vielen dank Euch! :)

Ich prüfe halt jetzt rund 2000 Werte mit PHP und code mir nen Wolf! :D
Dachte, ich könnte mir das ersparen ....

Gruß coderlein
 
Nun ja.

Aber davon abgesehen:

  • es hilft, die Anwendung sicherer zu machen
  • Du hast nun die beste (Open-Source) - Datenbank der Welt!

wie gesagt, sehe es eher als Vorteil. Es mag steinig sein der Weg, aber es lohnt sich, ihn zu gehen. PG ist sehr strikt und konservativ, aber es garantiert Dir dafür maximale Datenintegrität. Es ist Aufgabe einer DB, für sichere und stabile Datenintegrität zu sorgen, nicht aber faule Programmierung zu unterstützen.
 
Werbung:
Zurück
Oben