<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Creates a PDO instance representing a connection to a database</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="pdo.commit.html">PDO::commit</a></div> <div class="next" style="text-align: right; float: right;"><a href="pdo.errorcode.html">PDO::errorCode</a></div> <div class="up"><a href="class.pdo.html">PDO</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="pdo.construct" class="refentry"> <div class="refnamediv"> <h1 class="refname">PDO::__construct</h1> <p class="verinfo">(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)</p><p class="refpurpose"><span class="refname">PDO::__construct</span> — <span class="dc-title"> Creates a PDO instance representing a connection to a database </span></p> </div> <div class="refsect1 description" id="refsect1-pdo.construct-description"> <h3 class="title">Description</h3> <div class="constructorsynopsis dc-description"> <span class="modifier">public</span> <span class="methodname"><strong>PDO::__construct()</strong></span> ( <span class="methodparam"><span class="type">string</span> <code class="parameter">$dsn</code></span> [, <span class="methodparam"><span class="type">string</span> <code class="parameter">$username</code></span> [, <span class="methodparam"><span class="type">string</span> <code class="parameter">$password</code></span> [, <span class="methodparam"><span class="type">array</span> <code class="parameter">$driver_options</code></span> ]]] )</div> <p class="para rdfs-comment"> Creates a PDO instance to represent a connection to the requested database. </p> </div> <div class="refsect1 parameters" id="refsect1-pdo.construct-parameters"> <h3 class="title">Parameters</h3> <p class="para"> <dl> <dt> <span class="term">dsn</span> <dd> <p class="para"> The Data Source Name, or DSN, contains the information required to connect to the database. </p> <p class="para"> In general, a DSN consists of the PDO driver name, followed by a colon, followed by the PDO driver-specific connection syntax. Further information is available from the <a href="pdo.drivers.html" class="link">PDO driver-specific documentation</a>. </p> <p class="para"> The <em><code class="parameter">dsn</code></em> parameter supports three different methods of specifying the arguments required to create a database connection: </p> <p class="para"> <dl> <dt> <span class="term">Driver invocation</span> <dd> <p class="para"> <em><code class="parameter">dsn</code></em> contains the full DSN. </p> </dd> </dt> <dt> <span class="term">URI invocation</span> <dd> <p class="para"> <em><code class="parameter">dsn</code></em> consists of <strong class="userinput"><code>uri:</code></strong> followed by a URI that defines the location of a file containing the DSN string. The URI can specify a local file or a remote URL. </p> <p class="para"><strong class="userinput"><code>uri:file:///path/to/dsnfile</code></strong></p> </dd> </dt> <dt> <span class="term">Aliasing</span> <dd> <p class="para"> <em><code class="parameter">dsn</code></em> consists of a name <em><code class="parameter">name</code></em> that maps to <code class="code">pdo.dsn.<em><code class="parameter">name</code></em></code> in <var class="filename">php.ini</var> defining the DSN string. </p> <blockquote class="note"><p><strong class="note">Note</strong>: <p class="para"> The alias must be defined in <var class="filename">php.ini</var>, and not <var class="filename">.htaccess</var> or <var class="filename">httpd.conf</var> </p> </p></blockquote> </dd> </dt> </dl> </p> </dd> </dt> <dt> <span class="term">username</span> <dd> <p class="para"> The user name for the DSN string. This parameter is optional for some PDO drivers. </p> </dd> </dt> <dt> <span class="term">password</span> <dd> <p class="para"> The password for the DSN string. This parameter is optional for some PDO drivers. </p> </dd> </dt> <dt> <span class="term">driver_options</span> <dd> <p class="para"> A key=>value array of driver-specific connection options. </p> </dd> </dt> </dl> </p> </div> <div class="refsect1 returnvalues" id="refsect1-pdo.construct-returnvalues"> <h3 class="title">Return Values</h3> <p class="para"> Returns a PDO object on success. </p> </div> <div class="refsect1 errors" id="refsect1-pdo.construct-errors"> <h3 class="title">Errors/Exceptions</h3> <p class="para"> <span class="function"><strong>PDO::__construct()</strong></span> throws a <a href="class.pdoexception.html" class="classname">PDOException</a> if the attempt to connect to the requested database fails. </p> </div> <div class="refsect1 examples" id="refsect1-pdo.construct-examples"> <h3 class="title">Examples</h3> <p class="para"> <div class="example" id="example-918"><p><strong>Example #1 Create a PDO instance via driver invocation</strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /></span><span style="color: #FF8000">/* Connect to an ODBC database using driver invocation */<br /></span><span style="color: #0000BB">$dsn </span><span style="color: #007700">= </span><span style="color: #DD0000">'mysql:dbname=testdb;host=127.0.0.1'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$user </span><span style="color: #007700">= </span><span style="color: #DD0000">'dbuser'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$password </span><span style="color: #007700">= </span><span style="color: #DD0000">'dbpass'</span><span style="color: #007700">;<br /><br />try {<br /> </span><span style="color: #0000BB">$dbh </span><span style="color: #007700">= new </span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$dsn</span><span style="color: #007700">, </span><span style="color: #0000BB">$user</span><span style="color: #007700">, </span><span style="color: #0000BB">$password</span><span style="color: #007700">);<br />} catch (</span><span style="color: #0000BB">PDOException $e</span><span style="color: #007700">) {<br /> echo </span><span style="color: #DD0000">'Connection failed: ' </span><span style="color: #007700">. </span><span style="color: #0000BB">$e</span><span style="color: #007700">-></span><span style="color: #0000BB">getMessage</span><span style="color: #007700">();<br />}<br /><br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </div> <div class="example" id="example-919"><p><strong>Example #2 Create a PDO instance via URI invocation</strong></p> <div class="example-contents"><p> The following example assumes that the file <var class="filename">/usr/local/dbconnect</var> exists with file permissions that enable PHP to read the file. The file contains the PDO DSN to connect to a DB2 database through the PDO_ODBC driver: </p></div> <div class="example-contents screen"> <div class="cdata"><pre> odbc:DSN=SAMPLE;UID=john;PWD=mypass </pre></div> </div> <div class="example-contents"><p> The PHP script can then create a database connection by simply passing the <em>uri:</em> parameter and pointing to the file URI: </p></div> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /></span><span style="color: #FF8000">/* Connect to an ODBC database using driver invocation */<br /></span><span style="color: #0000BB">$dsn </span><span style="color: #007700">= </span><span style="color: #DD0000">'uri:file:///usr/local/dbconnect'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$user </span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$password </span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /><br />try {<br /> </span><span style="color: #0000BB">$dbh </span><span style="color: #007700">= new </span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$dsn</span><span style="color: #007700">, </span><span style="color: #0000BB">$user</span><span style="color: #007700">, </span><span style="color: #0000BB">$password</span><span style="color: #007700">);<br />} catch (</span><span style="color: #0000BB">PDOException $e</span><span style="color: #007700">) {<br /> echo </span><span style="color: #DD0000">'Connection failed: ' </span><span style="color: #007700">. </span><span style="color: #0000BB">$e</span><span style="color: #007700">-></span><span style="color: #0000BB">getMessage</span><span style="color: #007700">();<br />}<br /><br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </div> <div class="example" id="example-920"><p><strong>Example #3 Create a PDO instance using an alias</strong></p> <div class="example-contents"><p> The following example assumes that <var class="filename">php.ini</var> contains the following entry to enable a connection to a MySQL database using only the alias <em>mydb</em>: </p></div> <div class="example-contents"><div class="inicode"><pre class="inicode">[PDO] pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"</pre> </div></div> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /></span><span style="color: #FF8000">/* Connect to an ODBC database using an alias */<br /></span><span style="color: #0000BB">$dsn </span><span style="color: #007700">= </span><span style="color: #DD0000">'mydb'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$user </span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$password </span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /><br />try {<br /> </span><span style="color: #0000BB">$dbh </span><span style="color: #007700">= new </span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$dsn</span><span style="color: #007700">, </span><span style="color: #0000BB">$user</span><span style="color: #007700">, </span><span style="color: #0000BB">$password</span><span style="color: #007700">);<br />} catch (</span><span style="color: #0000BB">PDOException $e</span><span style="color: #007700">) {<br /> echo </span><span style="color: #DD0000">'Connection failed: ' </span><span style="color: #007700">. </span><span style="color: #0000BB">$e</span><span style="color: #007700">-></span><span style="color: #0000BB">getMessage</span><span style="color: #007700">();<br />}<br /><br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </div> </p> <blockquote class="note"><p><strong class="note">Note</strong>: <p class="para"> Before PHP5.3, a class which extends PDO and implements <em>__call</em> magic will always receive lower case <em><code class="parameter">$method</code></em>. </p> </p></blockquote> </div> </div><hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="pdo.commit.html">PDO::commit</a></div> <div class="next" style="text-align: right; float: right;"><a href="pdo.errorcode.html">PDO::errorCode</a></div> <div class="up"><a href="class.pdo.html">PDO</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>