Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wszystko jedną funkcją
Forum PHP.pl > Forum > Bazy danych > Oracle
DavidPL
Witam,
Postawiłem sobie za cel skonstruowanie metody (jako element większej klasy do obsługi Oracla) którą mógłbym zrobić "wszystko".
Funkcja na wejście ma dostać zapytania SQL (SELECT, UPDATE lub DELETE), natomiast na wyjściu chciałbym mieć:
- jeśli zapytanie wykonało się poprawnie:
- tablicę ze zwróconymi danymi dla SELECT
- TRUE dla UPDATE i DELETE
- jeśli zapytanie nie wykonało się:
- FALSE dla SELECT, UPDATE i DELETE

Sprawa wygląda prosto, ale nie mogę dojść w jaki sposób rozpoznać typ wysłanego zapytania czyli określić czy zapytanie zwraca wyniki czy też nie.
Za wszystkie pomysły i sugestie będę wdzięczny...
dr_bonzo
To proste: rozpoznasz po typie zapytania -- tzn czy zawiera 'SELECT', 'UPDATE' ...
DavidPL
A nie ma innego sposobu jak sprawdzanie zapytania SQL czy zawiera jedno z tych słów... Jakaś funkcja OCI8 lub coś w tym stylu?
Nie zauważyłem w manualu, ale może coś mam nie tak z oczami winksmiley.jpg
orson
witam ...

ja uzylem najprostszej metody na jaka wpadlem ... trim na zapytaniu a potem sprawdzasz pierwsze 2 litery zapytania [tak na wszelki] ... se to select, up to update itp ... prosto, szybko i bez problemu ...

pozdrawiam
DavidPL
Witam,
Znalazłem rozwiązanie troszkę moim zdaniem lepsze niż sprawdzanie typu zapytania. Wygląda ono tak:

oci_num_fields()

Jeśli zapytanie zwraca wyniki zwraca też jakieś pola (kolumny), a funkcja zwraca ilość tych pól, jeśli zapytanie nie zwraca żadnych wyników ilość pól jest równa zero.
Żeby nie było nie domówień, jeśli zapytanie typu SELECT nie zwróci żadnych danych z powodu niespełnienia warunku zapytania ilość pól jest zwracana poprawnie, czyli jest dodatnia.
SongoQ
Pomysl jest bardzo dobry i latwo bedzie z impementacja czegos takiego.
Zastanawia mnie jeszcze kwestia obslugi bledow zwracanych przez ORACLE.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.