Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z information_schema.tables
Forum PHP.pl > Forum > Przedszkole
alpork
Witam,

Poniżej przedstawiłem fragment kody, który przy uruchomieniu skryptu ma działać następująco
- łącze się z bazą
- sprawdzam czy istnieje tablica $table_name ="route" za pomocą
if(pg_query("select count(*) from information_schema.tables where table_catalog=$dbname and table_name=$table_name"))
jeżeli "nie" to tworzę tabelę
jeżeli "tak" to łącz się z bazą

Problem polega na tym że gdy w bazie już istnieje tabela (po pierwszym uruchomieniu skryptu) to warunek
if(pg_query("select count(*) from information_schema.tables where table_catalog=$dbname and table_name=$table_name")) jest spełniony i powiniem otrzymac informacje że się połączyłem z bazą.
Nie otrzymuję tej informacj tylko wykonyje kod z elsa czyli chcę stworzyć nową tabelę która już istnieje.



  1. $dbname='postgres';
  2. $host='127.0.0.1';
  3. $user='postgres';
  4. $password='test';
  5.  
  6.  
  7. $dbconn = pg_connect("dbname=$dbname host=$host user=$user password=$password");
  8. if ($dbconn)
  9. {
  10. $table_name ="route";
  11.  
  12. if(pg_query("select count(*) from information_schema.tables where table_catalog=$dbname and table_name=$table_name"))
  13. {
  14. echo "polaczony","<br>";
  15. }
  16. else
  17. {
  18. echo "Nie ma tablicy w bazie","<br>";
  19. $zap="create table $table_name (col0 varchar(5),col1 varchar(5))";
  20. $wykonaj = pg_query($zap) or die ('Nie wykreowal tablicy');
  21.  
  22. }
  23. }
  24. else
  25. {
  26. echo "nie polacz";
  27. }
  28.  
  29. pg_close($dbconn);
  30.  



Proszę o "rzucenie okiem" na kod i podpowiedz co robię żle.

Pozd.Alpork.
nospor
masz blad zapytania. wystarczy ze wyswietlisz sobie blad zapytania i sie dowiesz smile.gif

wszakze nie uzywam postgresa ale nie sądze by pozwalal na to:
table_catalog=$dbname and table_name=$table_name
czyli na wstawienie tekstow bez zadnych ciapków
alpork
Witam,

Problem polega na tym że już kombinowałem z ustawiemi ciapków dla zapytania
if(pg_query("select count(*) from information_schema.tables where table_catalog=$dbname and table_name=$table_name"))

Jak ustawie if(pg_query("select count(*) from information_schema.tables where table_catalog='$dbname' and table_name='$table_name'")) to wtedy warunek jest spełniony za każdym razem nie ważne czy tablica w bazie jest czy jej niema.

W logach postgres-a nie ma żadnych błedów związnych z linią.
if(pg_query("select count(*) from information_schema.tables where table_catalog=$dbname and table_name=$table_name"))

Pozd Alpork.
nospor
Cytat
Jak ustawie if(pg_query("select count(*) from information_schema.tables where table_catalog='$dbname' and table_name='$table_name'")) to wtedy warunek jest spełniony za każdym razem nie ważne czy tablica w bazie jest czy jej niema.
hehe, no wlasnie nie. wowczas zapytanie wykona sie poprawnie ale w zaden sposob nie wiesz czy zwrocil jakies rekordy czy nie smile.gif
zajrzyj do manuala - tam masz to wszystko ladnie opisane smile.gif
phpion
Nie wiem do końca co właściwie chcesz osiągnąć, ale może rozwiązaniem jest dodanie IF NOT EXISTS do CREATE TABLE? Wykonujesz to zapytanie, a potem puszczasz kod dalej bez żadnych warunków.

PS: pozdrowienia ze Środuli smile.gif
alpork
Witam,

Chcę sprawdzić czy tablica istnieje w bazie
- jeśli "nie" to ja stworzę i wypełnie danymi
- jeżli "tak" będę z niej korzystał.

Taki jest cel warunku z "information_schema.tables".

Pozd Alpork.

PS. Pozdrawiem również kolegę ze Środuli -smile.gif
phpion
To oprócz wykonania zapytania (pg_query) musisz jeszcze jakoś pobrać uzyskany wynik. Jak to zrobić? Masz podane w dokumentacji dla pg_query.
alpork
Witam,

DZięki za podpowiedz, rozwiązałem problem.

Pozd Alpork.
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.