php i pgsql

robin5hood
Użytkownik
Użytkownik
Posty: 1676
Rejestracja: 2 kwie 2007, o 14:43
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 178 razy
Pomógł: 17 razy

php i pgsql

Post autor: robin5hood »

Mam pytanie mam zainstalowanego phpa i pgsql : co muszę zrobić aby one działały razem?
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

php i pgsql

Post autor: smiechowiec »

Te programy nie powinny ze sobą kolidować.
Po instalacji wystarczy je uruchomić.
W postgresie możesz utworzyć bazę, a z poziomu php może z niej korzystać.
Z poziomu php dostępne są funkcje dedykowane specjalnie dla pgsql.
Połączenie z bazą o nazwie nazwa_bazy na localhost

Kod: Zaznacz cały

$conn = pg_connect("dbname=nazwa_bazy user=postgres password=postgres host=127.0.0.1");
if (!$conn) {
    echo "Bł±d poł±czenia z PostgreSQL";
  }
Zapytania wywołujesz przez

Kod: Zaznacz cały

$wynik = pg_exec("SELECT * FROM tabela");
$ilosc_wierszy = pg_numrows($wynik);
for ($i = 0; $i < $ilosc_wierszy; $i++) {
  $row = pg_fetch_row($wynik, $i);
    for ($j = 0; $j < count($row); $j++)
      echo $row[$j] . " ";
    echo "<br>
" ;
    }
pg_freeresult($wynik);
robin5hood
Użytkownik
Użytkownik
Posty: 1676
Rejestracja: 2 kwie 2007, o 14:43
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 178 razy
Pomógł: 17 razy

php i pgsql

Post autor: robin5hood »

po wisaniu kodu

Kod: Zaznacz cały

<?php
// Connecting, selecting database
$dbconn = pg_connect ( "host=localhost dbname=publishing user=www password=foo" )
or die( 'Could not connect: ' . pg_last_error ());

// Performing SQL query
$query = 'SELECT * FROM authors' ;
$result = pg_query ( $query ) or die( 'Query failed: ' . pg_last_error ());

// Printing results in HTML
echo "<table>\n" ;
while ( $line = pg_fetch_array ( $result , null , PGSQL_ASSOC )) {
echo "\t<tr>\n" ;
foreach ( $line as $col_value ) {
echo "\t\t<td> $col_value </td>\n" ;
}
echo "\t</tr>\n" ;
}
echo "</table>\n" ;

// Free resultset
pg_free_result ( $result );

// Closing connection
pg_close ( $dbconn );
?>

mam taki błąd
Call to undefined function pg_connect() in

mimoże mam zainsalowany posgrest
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

php i pgsql

Post autor: smiechowiec »

Najpierw sprawdź funkcję phpinfo();
zobacz czy masz dostępne rozszerzenia php
przykładowo
PostgreSQL Support enabled
PostgreSQL(libpq) Version 8.2.14

Na Linuxie zobacz w php.ini
powinna byc linijka (bez znaku średnika na początku)
extension = pgsql.so

ten plik powinien być katalogu rozszerzeń.

pod windą
w php.ini (też ważne, bez znaku średnika na początku)
extension=php_pgsql.dll

Problem może tkwić w nowej wersji php powyżej 5.2.5 pod windows.
Zazwyczaj wystarczy zainstalować wersję starszą lub przegrać plik php_pgsql.dll ze starszej wersji.
robin5hood
Użytkownik
Użytkownik
Posty: 1676
Rejestracja: 2 kwie 2007, o 14:43
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 178 razy
Pomógł: 17 razy

php i pgsql

Post autor: robin5hood »

Mimoże zmieniłem php_pgsql.dll ze starszej wersji to i tak coś jest nie tak bo wyskakuje
takie coś
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

php i pgsql

Post autor: smiechowiec »

Może chodzić o położenie pliku.
W pliku php.ini podana jest ścieżka do katalogu z rozszerzeniami
extension_dir = tu jest podana ścieżka

Plik php_pgsql.dll powinien znajdować w tej lokalizacji, podanie ścieżki względnej lub bezwzględnej nie jest poprawne.
robin5hood
Użytkownik
Użytkownik
Posty: 1676
Rejestracja: 2 kwie 2007, o 14:43
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 178 razy
Pomógł: 17 razy

php i pgsql

Post autor: robin5hood »

mam tak ustawione w php.ini dobrze?

; Local Variables:
; tab-width: 4
; End:
[PHP_BZ2]
extension=php_bz2.dll
[PHP_CURL]
extension=php_curl.dll
[PHP_GD2]
extension=php_gd2.dll
[PHP_GETTEXT]
extension=php_gettext.dll
[PHP_GMP]
extension=php_gmp.dll
[PHP_IMAP]
extension=php_imap.dll
[PHP_MBSTRING]
extension=php_mbstring.dll
[PHP_MYSQL]
extension=php_mysql.dll
[PHP_MYSQLI]
extension=php_mysqli.dll
[PHP_OPENSSL]
extension=php_openssl.dll
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll
[PHP_PDO_ODBC]
extension=php_pdo_odbc.dll
[PHP_PDO_SQLITE]
extension=php_pdo_sqlite.dll
[PHP_PGSQL]
extension=php_pgsql.dll
[PHP_SOAP]
extension=php_soap.dll
[PHP_SOCKETS]
extension=php_sockets.dll
[PHP_SQLITE3]
extension=php_sqlite3.dll
[PHP_TIDY]
extension=php_tidy.dll
[PHP_XMLRPC]
extension=php_xmlrpc.dll
[PHP_EXIF]
extension=php_exif.dll
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

php i pgsql

Post autor: smiechowiec »

Chyba nie ma
[PHP_PDO_PGSQL]
extension=php_pdo_pgsql.dll

Plik php_pdo_pgsql.dll też trzeba by wtedy skopiować ze starszej wersji.
emilgubala
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 16 paź 2009, o 15:13
Płeć: Mężczyzna
Lokalizacja: Kielce

php i pgsql

Post autor: emilgubala »

Z tego co widzę - rozmawiacie troszkę o 2 różnych rzeczach:

php_pgsql != php_pdo_pgsql ;)

Odsylam tutaj:

i tutaj:


Osobiście polecam korzystanie z PDO - biblioteka jest napisana w C i z testów z których wynikami miałem okazję się zapoznać działa naprawdę zdumiewająco szybko - w większości przypadków szybciej niż standardowe funkcje "pg_". Ale największym atutem jest to ze aplikacja napisana z użyciem PDO jest odporna na zmianę silnika bazodanowego... A ciekawostką jest możliwość bindowania danych do zapytań (opisane na wikibooks) - zapewnia to skuteczne zabezpieczenie przed SQL INJ... Ale dokladny jej opis to już chyba kwalifikował by się na założenie nowego tematu - dlatego nie będę tutaj "spamował".

Wracając do kontekstu jeśli chcesz mieć "pg_"'sy :) to dodaj php_pgsql a nie php_pdo_pgsql ;)

-----------
A tak wogólę to Witam Wszystkich - jest to mój pierwszy post na forum.
Mam nadzieję ze odświeżę obecną i zdobędę kolejną wiedzę z zakresu nauk ścisłych :)
Pozdrawiam !

------
Edit:
W confingu powyżej nie zauważyłem : php_pgsql.dll
Jeśli jest to dobra wersja biblioteki - to jest on poprawny co obsługi "pg_"

Co do samego komunikatu - zanim ładujesz cokolwiek z php_pdo_xxxxxxx musisz załadować samo php_pdo :) - php_pdo_pgsql sie nie załadowało powodując błąd ponieważ php_pdo nie było załadowane :)
ODPOWIEDZ