|
|
pg_connect (PHP 3, PHP 4, PHP 5) pg_connect -- Open a PostgreSQL connection Описаниеresource pg_connect ( string connection_string [, int connect_type] )
pg_connect() opens a connection to a
PostgreSQL database specified by the
connection_string.
If a second call is made to pg_connect() with
the same connection_string as an existing connection, the
existing connection will be returned unless you pass
PGSQL_CONNECT_FORCE_NEW as
connect_type.
The old syntax with multiple parameters
$conn = pg_connect("host", "port", "options", "tty", "dbname")
has been deprecated.
Список параметров
connection_string
The connection_string can be empty to use all default parameters, or it
can contain one or more parameter settings separated by whitespace.
Each parameter setting is in the form keyword = value. Spaces around
the equal sign are optional. To write an empty value or a value
containing spaces, surround it with single quotes, e.g., keyword =
'a value'. Single quotes and backslashes within the value must be
escaped with a backslash, i.e., \' and \\.
The currently recognized parameter keywords are:
host, hostaddr, port,
dbname, user,
password, connect_timeout,
options, tty (ignored), sslmode,
requiressl (deprecated in favor of sslmode), and
service. Which of these arguments exist depends
on your PostgreSQL version.
connect_type
If PGSQL_CONNECT_FORCE_NEW is passed, then a new connection
is created, even if the connection_string is identical to
an existing connection.
Возвращаемые значения
PostgreSQL connection resource on success, FALSE on failure.
Примеры
Пример 1. Using pg_connect() |
<?php
$dbconn = pg_connect("dbname=mary");
$dbconn2 = pg_connect("host=localhost port=5432 dbname=mary");
$dbconn3 = pg_connect("host=sheep port=5432 dbname=mary user=lamb password=foo");
$conn_string = "host=sheep port=5432 dbname=test user=lamb password=bar";
$dbconn4 = pg_connect($conn_string);
?>
|
|
xourge
19-Aug-2007 09:17
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 "
Sohel Taslim
02-Aug-2007 07:20
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
borovik -at- gmail
03-Apr-2007 07:06
"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.
Anonymous
10-Apr-2005 09:51
The values accepted by pg_connect's sslmode argument are: disable, allow, prefer, require
phpnet at benjamin dot schulz dot name
01-Sep-2004 04:28
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()
Cybertinus
15-Dec-2003 01:47
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.
xzilla at users dot sourceforge dot net
09-Dec-2003 08:22
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
derry at siliconriver.com dot au
07-Aug-2003 08:48
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.
khyri at khyri dot com
31-Oct-2002 04:23
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.
Helio Ferenhof <d-m at eudoramail dot com>
18-Feb-2002 01:20
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'); $result=pg_exec("SELECT field FROM table WHERE field = '$something' "); $fetch = pg_fetch_row($query_st); pg_close($connection); ?>
[]
|
|