<!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, PHP 7, 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">$passwd</code></span> [, <span class="methodparam"><span class="type">array</span> <code class="parameter">$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> dsn</dt> <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 <code class="parameter">dsn</code> parameter supports three different methods of specifying the arguments required to create a database connection: </p> <p class="para"> <dl> <dt> Driver invocation</dt> <dd> <p class="para"> <code class="parameter">dsn</code> contains the full DSN. </p> </dd> <dt> URI invocation</dt> <dd> <p class="para"> <code class="parameter">dsn</code> 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> Aliasing</dt> <dd> <p class="para"> <code class="parameter">dsn</code> consists of a name <code class="parameter">name</code> that maps to <code class="code">pdo.dsn.<code class="parameter">name</code></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> </dl> </p> </dd> <dt> username</dt> <dd> <p class="para"> The user name for the DSN string. This parameter is optional for some PDO drivers. </p> </dd> <dt> passwd</dt> <dd> <p class="para"> The password for the DSN string. This parameter is optional for some PDO drivers. </p> </dd> <dt> options</dt> <dd> <p class="para"> A key=>value array of driver-specific connection options. </p> </dd> </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-1039"><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 a MySQL 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-1040"><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-1041"><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> </div> <div class="refsect1 changelog" id="refsect1-pdo.construct-changelog"> <h3 class="title">Changelog</h3> <p class="para"> <table class="doctable informaltable"> <thead> <tr> <th>Version</th> <th>Description</th> </tr> </thead> <tbody class="tbody"> <tr> <td>5.3.0</td> <td> Classes which extends <a href="class.pdo.html" class="classname">PDO</a> and implements the <em>__call</em> magic method will now receive the method name in the declared casing. Previously this was always lower case. </td> </tr> </tbody> </table> </p> </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>