|
pg_connect
Open a PostgreSQL connection
(PHP 4, PHP 5)
Example 1906. Using pg_connect()<?php Code Examples / Notes » pg_connectanonymous
The values accepted by pg_connect's sslmode argument are: disable, allow, prefer, require
xourge
remember that when you use a blank password there will be an error because of: password= dbname= (...) to fix this problem use '' in your $options variable example: $options = " host='localhost' port='5432' user='postgres' password='' dbname='test' "; pg_connect($options); *** careful: I used double ' after password=, not " xzilla
regarding the note from matias at nospam dot projectcast dot com on 12-Feb-2002 01:16, you do not need a user in the database with the same name a your web user with ANY version of postgresql. The only time that would be a requirement ifs if you set your postgresql server to only allow IDENT based authentication (which IIRC is the default on Red Hat systems, which might be what lead to the confusion). For more info on the various authentication methods allowed by postgresql, check out http://www.postgresql.org/docs/7.4/static/client-authentication.html rolf
pg_connect() won't work with the authentication method 'crypt' in the pg_hba.conf. Took me an hour to figure that out till I remeberd some other issues with windows missing the crypt() call.
derry
pg_connect seems to support SSL connections, on systems where Postgres has been compiled with ssl, i'm assuming this is since psql uses libpq to connect. pg_connect can successfully connect, and use the "requiressl" argument. kayotix
Little note that is buried in the install somewhere. In Php 3, PostgreSQL support was activated by adding --with-postgresql=[DIR] to the options passed to ./configure. With Php 4.0.2 (on Linux) the parameter was --with-pgsql. The only place I found this was in the installing PHP on Unix section of the manual.
leace
If you use PostgreSQL users for authenticating into your pg database rather than using your own authentication, always specify host directive in pg_connect and edit pg_hba.conf to authenticate from this host accordingly. Otherwise, PHP will connect as 'local' using UNIX domain sockets, which is set in pg_hba.conf to 'trust' by default (so you can connect using psql on console without specifying password) and everyone can connect to db _without password_ .
cybertinus
If you use pg_connect('host=localhost port=5432 user=my_username password=my_password dbname=my_dbname') and you get the following error: "Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Connection refused Is the server running on host localhost and accepting TCP/IP connections on port 5432?" then you should try to leave the host= and port= parts out of the connection string. This sounds strange, but this is an "option" of Postgre. If you have not activated the TCP/IP port in postgresql.conf then postgresql doesn't accept any incoming requests from an TCP/IP port. If you use host= in your connection string you are going to connect to Postgre via TCP/IP, so that's not going to work. If you leave the host= part out of your connection string you connect to Postgre via the Unix domain sockets, which is faster and more secure, but you can't connect with the database via any other PC as the localhost. jtate
If you use host=HOSTNAME in your pg_connect string when connecting to PostgreSQL databases newer than 7.1, you need to make sure that your postmaster daemon is started with the "-i" option. Otherwise the connection will fail. See http://www.postgresql.org/idocs/index.php?client-authentication.html for client authentication documentation.
phpnet
if you need to open a new connection handle (i.e. for multiple pg_send_query()) use PGSQL_CONNECT_FORCE_NEW as second parameter to pg_connect()
sohel taslim
I got the same problem but I have to solve that in different way. In my postgresql.conf file the following was commented. So, I active that under Connection Settings- # - Connection Settings â tcpip_socket = true helio ferenhof
Connection Hint: Do you always write at the code the username and password to connect to your PostgreSQL database !? What if your username or password changes? Create a connection include file. --- connection.inc --- <?php $connection = pg_connect("host=localhost port=5432 dbname=DATABASENAME user=USERNAME password=PASSWORD") or die ("Nao consegui conectar ao PostGres --> " . pg_last_error($conn)); ?> // you can use $database name and pass it from the php file if you connect into different databases. --- Phpfile.php --- <?php include('connection.php'); // Include the connection to the databank THEN start your SQL Job :) $result=pg_exec("SELECT field FROM table WHERE field = '$something' "); // Sample of SQL QUERY $fetch = pg_fetch_row($query_st); // Sample of SQL QUERY pg_close($connection); // Close this connection ?> []´s Helio Ferenhof d-m@eudoramail.com matias
At least with Postgres 7.2, connecting to local postgresdatabase requires a user in the database with the same name as the user running apache, or the connection fails.
khyri
After upgrading to PHP 4.2.3 from PHP 4.1.2 (Red Hat Linux Advanced Server with Stronghold 4.0) in order to manually compile in MHASH support, I discovered that Postgres support has disappeared, despite being specified on the command line, and compiling with no errors. FATAL: Undefined function: pg_connect() Confirmed by looking at the output of phpinfo() and comparing it to the output pre-upgrade - no mention of PostgreSQL in the new one. Detective work led me to find that the old pgsql.so in /usr/lib/php4 was untouched, and the new one had ended up in /usr/lib/20020429 instead. The fix was to edit config_vars.mk after configuration to change the value of EXTENSION_DIR, and then compile. Not quite sure where 20020429 came from, looks like a left-over value from development testing... Anyway, in case any one else has a similar problem, thought I'd document it here, as a problem with pg_connect is where this will first surface as a symptom. borovik -at- gmail
"If you use pg_connect('host=localhost port=5432 user=my_username password=my_password dbname=my_dbname') and you get the following error: "Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Connection refused Is the server running on host localhost and accepting TCP/IP connections on port 5432?" " I solved this error just by setting listen_addresses = '*' in the postgresql.conf file. This error occurs probably despite of a name resolution to localhost, given in the "host" parameter. So you can set the host in the pg_connect() function. |
Change Languagepg_affected_rows pg_cancel_query pg_client_encoding pg_close pg_connect pg_connection_busy pg_connection_reset pg_connection_status pg_convert pg_copy_from pg_copy_to pg_dbname pg_delete pg_end_copy pg_escape_bytea pg_escape_string pg_execute pg_fetch_all_columns pg_fetch_all pg_fetch_array pg_fetch_assoc pg_fetch_object pg_fetch_result pg_fetch_row pg_field_is_null pg_field_name pg_field_num pg_field_prtlen pg_field_size pg_field_table pg_field_type_oid pg_field_type pg_free_result pg_get_notify pg_get_pid pg_get_result pg_host pg_insert pg_last_error pg_last_notice pg_last_oid pg_lo_close pg_lo_create pg_lo_export pg_lo_import pg_lo_open pg_lo_read_all pg_lo_read pg_lo_seek pg_lo_tell pg_lo_unlink pg_lo_write pg_meta_data pg_num_fields pg_num_rows pg_options pg_parameter_status pg_pconnect pg_ping pg_port pg_prepare pg_put_line pg_query_params pg_query pg_result_error_field pg_result_error pg_result_seek pg_result_status pg_select pg_send_execute pg_send_prepare pg_send_query_params pg_send_query pg_set_client_encoding pg_set_error_verbosity pg_trace pg_transaction_status pg_tty pg_unescape_bytea pg_untrace pg_update pg_version |