Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php, MySQL] rozpoznać typ zapytania/kwerendy
Forum PHP.pl > Forum > PHP
SebaZ
dry.gif
Witam wszystkich. Potrzebuje rozpoznać typ kwerendy/zapytania jakie za chwilę zostanie wykonane. Chodzi mi o ropoznanie czy jest to SELECT, UPDATE lub INSERT.
Czy istnieje jakaś funkcja do tego?
Czy mam może sprawdzać kilka początkowych znaków ciągu z treści kwerendy? i wtedy patrzeć czy jest to, np. SELECT, UPDATE lub INSERT

Z góry dzieki za odpowiedź
SongoQ
Po pierwsze nie kwerendy tylko zapytania.
Co do funkcji ktora by to robila to niestety chyba musisz sobie rozpoznac pierwszy wyraz.
php programmer
  1. <?php
  2. $query = "SELECT * FROM tabela";
  3. $typ = strtolower(substr($query,0,6));
  4. echo $typ;
  5. ?>
TomASS
Ja bym raczej użył wyrażeń regularnych.

@php programmer :
co byś powiedział na:
  1. SELECT * FROM tabela;DELETE FROM tabela;
SongoQ
@TomASS A co bys powiedzial na?

  1. INSERT INTO tabela SELECT tabela2
SebaZ
Cytat(SongoQ @ 20.09.2006, 16:09:02 ) *
Po pierwsze nie kwerendy tylko zapytania.

a czym według Ciebei jest kwerenda? jest to synonim słowa: zapytanie i jak najbardziej pasuje do tego wyrażenia. Jednak żeby wszyscy zrozumieli napisałem kwerenda/zapytanie.

Radzę zajrzeć do słownika synonimów (uwzględniającego język techniczny).

Cytat(SongoQ @ 20.09.2006, 17:05:53 ) *
@TomASS A co bys powiedzial na?

  1. INSERT INTO tabela SELECT tabela2
nie ma to znaczenia bo interesuje mnie zapytanie główne, podzapytanai moga być dowolne
mike
Cytat(SebaZ @ 20.09.2006, 18:10:56 ) *
nie ma to znaczenia bo interesuje mnie zapytanie główne, podzapytanai moga być dowolne
No to w czm masz problem, weź pierwsze słowo zapytania i sprawdź jakie to slowo.
Zbiór możliwości nie jest chyba za duży, co? tongue.gif

Lista funkcji do manipulowania stringami znajduje sie tutaj: String Functions
SebaZ
nie ma żadnego problemu... wiem że moge manipulowac stringami i napisałem o tym w pierwszym postcie. Chciałem tylko wiedzieć czy istnieje jakas inna metoda na wykrycie rodzaju zapytania. Ale widzę ze nie ma i dzięki za uświadomienie mnie. To była tylko ciekawość
SongoQ
Cytat
a czym według Ciebei jest kwerenda? jest to synonim słowa: zapytanie i jak najbardziej pasuje do tego wyrażenia. Jednak żeby wszyscy zrozumieli napisałem kwerenda/zapytanie.

Oczywiscie wiem znaczenie tego. M$ wprowadzajac slowo kwerenda oznaczal widok. Poczawszy od Accessa kwerenda oznaczala zapytanie ktore mialo byc przechowywane w bazie i byla mozliwosc odwolania sie do niego jak do tabeli, dzisiejszy widok (choc teraz mozliwosci sa troche wieksze), choc M$ troche sie zmienilo. Obecnie zamiennie stosuje sie slowo widok/kwerenda czasami zapytanie/kwerenda. Moze troche nieslusznie zwrocilem Ci uwage ale moze z przyzwyczajenia do tego czasami trudno zrozumiec.
SebaZ
cieszę się, że się zrozumieliśmy smile.gif
TomASS
@SongoQ :
Cytat
@TomASS A co bys powiedzial na?

  1. INSERT INTO tabela SELECT tabela2

Ja tylko zakomunikowałem, że do takiego kodu:
  1. <?php
  2. $query = "SELECT * FROM tabela";
  3. $typ = strtolower(substr($query,0,6));
  4. echo $typ;
  5. ?>

Dołożyłbym jeszcze na wszelki wypadek (czyli np: SELECT * FROM tabela;DELETE FROM tabela; )
exploda po ';'
nospor
@TomASS ale mysql_query nie pozwala na wykonanie wiecej niz jednego zapytania. Twoja konstrukcja by najwyzklej w swiecie wywalila blad.
SebaZ
do ogólnego zastosowania to miałoby to rację bytu, ale nie jest potrzebne mi smile.gif
Pytalem, bo kombinuję jak w cms php-Fusion wklepać cacheowanie zapytań smile.gif a najprostszym sposobem byłoby wstawienie kodu klasy cacheującej do funkcji z których korzysta ten cms (na je w swoim enginie) np.
  1. <?php
  2. function dbquery($query) {
  3. $result = @mysql_query($query);
  4. if (!$result) {
  5. return false;
  6. } else {
  7. return $result;
  8. }
  9. }
  10. ?>
zamiast jej zawartości wstawic kod klasy cachującej.

Jednak po drodzę stanęło kilka przeszkód m.in. rozpoznanie typu zapytania, bo po co cachować INSERT i UPDATE (dla nich tyrzeba kasowac cache aby sie odnowił) a dla SELECT trzeba cahcować

Chyba teraz zrozumieliscie o co mi biega smile.gif
SongoQ
Proponuje zamknac - zawsze znajdzie sie przyklad ktory wymaga wiekszego kombinowawania a jak autor posta juz sobie poradzil wiec nie widze wiekszego sensu ciagniecia tego tematu.

Jesli sie myle to otworze.
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.