TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
jak zrobić zapytanie w sql? , Hawaj 24/01/08 20:10 Witam,
Mam oto taki problem:
tabela w oraclu: czas->kolumny to data i godzina.
Jak zrobić zapytanie (przez php) które przy dodaniu daty i godziny (poprzez metodę POST z wykorzystaniem foramularza) porówna dodany tą metodą rekord w tabeli i jeśli data i godzina będzie taka sama jak rekord istniejący wyświetli "taka data i godzina już jest" w przeciwnym przypadku "nie ma tej daty i godziny"
Trochę z tym namieszałem, ale pewnie będziecie wiedzieli o co chodzi.
Grzebałem troszkę o necie, ale nic nie znalazłem na ten temat.
dzięki za odpowiedzi- pytanie, co masz na myśli , bwana 24/01/08 22:36
1. jak napisać zapytanie w oracle sql?
2. jak wysłać zapytanie do bazy?
Najprościej otworzyć kursor:
select 1 from czas where data=parametr_data and czas=parametr_czas
i sprawdzić, czy przy fetchowaniu rekordu wystąpi NO_DATA_FOUND.
W ogóle, żeby połączyć php z oraklem, na maszynie na której działa php muszą być zainstalowane biblioteki klienckie oracle (oci.dll jak sądzę, w każdym razie powinien być to o ile wiem, oracle client), włączona jakaś biblioteka php odpowiedzialna za komunikację z bazami oracle no i skonfigurowany tns_names. Piszę ogólnikowo, bo być może to wszystko wiesz/masz zrobione - jeśli nie, to od tego zacznij."you don't need your smile when I cut
your throat" - ... , Hawaj 24/01/08 23:09
Już mi działa jak dam zapytanie co napisałeś:
$s = oci_parse($nc,"SELECT DATA, GODZINA FROM CZAS WHERE DATA='$data' AND GODZINA='$godzina' ");
oci_execute($s,OCI_DEFAULT);
tylko jak teraz dopisać w php:
żeby- jak będzie taki rekord wyświetliło "rekord istnieje"
lub "rekord nie istnieje'- ... , vezyr 24/01/08 23:47
Nie korzystałem nigdy z Oracle, ale może to zadziała:
$s = oci_parse($nc,"SELECT DATA, GODZINA FROM CZAS WHERE DATA='$data' AND GODZINA='$godzina' ");
oci_execute($s,OCI_DEFAULT);
if(oci_num_rows($s) > 0)
echo "rekord istnieje";
else
echo "rekord nie istnieje";http://www.vezyr.pl
- ... , Hawaj 25/01/08 09:17
tak niestety nie działa- To może tak? , Conroy 25/01/08 11:08
[...]
$results = oci_execute($s,OCI_DEFAULT);
if(oci_num_rows($results) > 0)
[..]http://flickr.com/photos/myhacien
da - Re: To może tak? , vezyr 26/01/08 16:32
To Ci raczej nie zadziała. Cytat z dokumentacji php dla funkcji oci_execute:
Zwracane wartości
Zwraca TRUE w przypadku sukcesu, FALSE w przypadku porażki.
A dla funkcji oci_num_rows:
int oci_num_rows ( resource $statement )
Gets the number of rows affected during statement execution.
Dziwne, że nie działa, bo w przykładach do tej funkcji jest nawet napisany kod, który tworzy (kopiuje) tabelę i wypełnia ją danymi z innymi tabeli, a na koniec wyświetla ilość wierszy nowej tabeli:
$conn = oci_connect("scott", "tiger");
$stmt = oci_parse($conn, "create table emp2 as select * from emp");
oci_execute($stmt);
echo oci_num_rows($stmt) . " rows inserted.<br />";http://www.vezyr.pl - (cd) , vezyr 26/01/08 16:39
Na boardzie chyba nie ma opcji edycji własnych postów, to dopiszę jeszcze małą uwagę.
Spróbuj wykonać zapytanie tak:
oci_execute($s);
czyli bez tego OCI_DEFAULT. Ew. jeżeli stosujesz OCI_DEFAULT, próbuj wykonywać tuż po nim funkcję oci_commit, czyli tak:
oci_execute($s,OCI_DEFAULT);
oci_commit ($connection);
co jest równoważne wykonaniu oci_execute bez opcji OCI_DEFAULT.http://www.vezyr.pl
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|