Forum Gry Filmy i Seriale Tech Ogólne Archiwum Regulamin

Forum: Postgres i problem z NULL

15.11.2012 09:35
1
poltar
176
Senator

Postgres i problem z NULL

Mam maly klopot z konstrukcja prostego INSERTA w Postgress - zwykle dzialam w LAMP lecz na potrzeby jednego projektu musialem sie przesiasc na LAPP i wyszla moja nieznajomosc pewnych niuansow PG. W czym rzecz:

Upraszczajac problem do meritum - pobieram z formularza (POST) wartosc pola i zwyklym insertem wpisuje go do bazy. Pole to jednak w pewnych sytuacjach moze byc puste i wtedy mam problem. Przy standardowym zapytaniu wzorem z MYSQL do bazy wpisuja sie dwa apostrofy (i dziala ok jezli zmienna przechowuje dane).

.....

$pg_pole = pg_escape_string($_POST['pole']);

.....

$q = "INSERT INTO tab (pole) VALUES ('$pg_pole')";

$ref = pg_query($conlink,$q);

....

Poczytalem dokumentacje i trafilem na funkcje NULLIF : po zmianie kodu :

$q = "INSERT INTO tab (pole) VALUES (NULLIF($pg_pole,''))";

wszystko jest cacy - z wyjatkiem czasu wykonania operacji. Oczywiscie gorny przyklad to wyrywek zapytania, we wlasciwym uzywam NULLIF kilkadziesiat razy. To powoduje ze czas wykonania operacji niepokojaco rosnie - z kilku milisekund do kilkudziesieciu. Uzycie preparowanych zapytan poprawia sytuacje ale niewiele.

I wreszcie wlasciwie pytanie po tym przydlugim wstepie ktory mi mam nadzieje wybaczycie:

Czy mozliwe jest jakos globalne uzycie NULLIF dla szeregu danych a nie dla kazdej z osobna? Jakas dyrektywa or cos?

A moze jest inny sposob na wymuszenie wstawiania NULL do bazy gdy zmienna jest pusta? (oczywiscie zwykle $dane = NULL; nie dziala - a gdyby nawet to czas bylby jeszcze dluzszy :))

ps. Swoja droga na MYSQL mowia - zwykly worek z danymi, ale takich problemow to on nie sprawial mi nigdy :)

16.11.2012 17:10
2
odpowiedz
poltar
176
Senator

upik. Problem nadal aktualny :) Na innych formnach sa bezradni, tu w sumie to tylko z przyzwyczajenia napisalem, ale jak to mowia - a nuz widelec sie uda.

16.11.2012 18:09
pasterka
3
odpowiedz
pasterka
202
Paranoid Android

poltar --> na Postgresie sie nie znam, wiec sama nie podpowiem, ale probowales zadac pytanie na stackoverflow? Tam zawsze jest duza szansa, ze ktos pomoze.

Forum: Postgres i problem z NULL