<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.uodbc.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'en',
  ),
  'this' => 
  array (
    0 => 'function.odbc-connect.php',
    1 => 'odbc_connect',
    2 => 'Connect to a datasource',
  ),
  'up' => 
  array (
    0 => 'ref.uodbc.php',
    1 => 'ODBC Functions',
  ),
  'prev' => 
  array (
    0 => 'function.odbc-commit.php',
    1 => 'odbc_commit',
  ),
  'next' => 
  array (
    0 => 'function.odbc-connection-string-is-quoted.php',
    1 => 'odbc_connection_string_is_quoted',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'en',
    'path' => 'reference/uodbc/functions/odbc-connect.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.odbc-connect" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">odbc_connect</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">odbc_connect</span> &mdash; <span class="dc-title">Connect to a datasource</span></p>

 </div>
 
 <div class="refsect1 description" id="refsect1-function.odbc-connect-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>odbc_connect</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$dsn</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.string.php" class="type string">string</a></span></span> <code class="parameter">$user</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="attribute"><a href="class.sensitiveparameter.php">#[\SensitiveParameter]</a> </span><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.string.php" class="type string">string</a></span></span> <code class="parameter">$password</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$cursor_option</code><span class="initializer"> = <strong><code><a href="uodbc.constants.php#constant.sql-cur-use-driver">SQL_CUR_USE_DRIVER</a></code></strong></span></span><br>): <span class="type"><span class="type">Odbc\Connection</span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="simpara">
   The connection id returned by this functions is needed by other
   ODBC functions. You can have multiple connections open at once as long as
   they either use different db or different credentials.
  </p>
  <p class="simpara">
   With some ODBC drivers, executing a complex stored procedure may
   fail with an error similar to: &quot;Cannot open a cursor on a stored
   procedure that has anything other than a single select statement
   in it&quot;.  Using SQL_CUR_USE_ODBC may avoid that error. Also, some
   drivers don&#039;t support the optional row_number parameter in
   <span class="function"><a href="function.odbc-fetch-row.php" class="function">odbc_fetch_row()</a></span>. SQL_CUR_USE_ODBC might help
   in that case, too.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.odbc-connect-parameters">
  <h3 class="title">Parameters</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">dsn</code></dt>
     <dd>
      <p class="para">
       The database source name for the connection. Alternatively, a
       DSN-less connection string can be used.
      </p>
     </dd>
    
    
     <dt><code class="parameter">user</code></dt>
     <dd>
      <p class="para">
       The username.
       This parameter is ignored if <code class="parameter">dsn</code> contains <code class="literal">uid</code>.
       To connect without specifying a <code class="parameter">user</code>,
       use <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">password</code></dt>
     <dd>
      <p class="para">
       The password.
       This parameter is ignored if <code class="parameter">dsn</code> contains <code class="literal">pwd</code>.
       To connect without specifying a <code class="parameter">password</code>,
       use <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">cursor_option</code></dt>
     <dd>
      <p class="para">
       This sets the type of cursor to be used
       for this connection. This parameter is not normally needed, but
       can be useful for working around problems with some ODBC drivers.
      </p>
      <span class="simpara">
       The following constants are defined for cursortype:
      </span>
      <p class="para">
       <ul class="itemizedlist">
        <li class="listitem">
         <span class="simpara">
          SQL_CUR_USE_IF_NEEDED
         </span>
        </li>
        <li class="listitem">
         <span class="simpara">
          SQL_CUR_USE_ODBC
         </span>
        </li>
        <li class="listitem">
         <span class="simpara">
          SQL_CUR_USE_DRIVER
         </span>
        </li>
       </ul>
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.odbc-connect-returnvalues">
  <h3 class="title">Return Values</h3>
  <p class="para">
   Returns an ODBC connection,  or <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> on failure.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.odbc-connect-changelog">
  <h3 class="title">Changelog</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
  <td>8.4.0</td>
  <td>
   This function returns a <span class="classname"><strong class="classname">Odbc\Connection</strong></span> instance now;
   previously, a <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> was returned.
  </td>
 </tr>

     <tr>
  <td>8.4.0</td>
  <td>
   <code class="parameter">user</code> and <code class="parameter">password</code> are now nullable,
   they are now also optional and default to <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
  </td>
 </tr>

 <tr>
  <td>8.4.0</td>
  <td>
   Previously, using an empty string for <code class="parameter">password</code> would not include
   <code class="literal">pwd</code> in the generated connection string for <code class="parameter">dsn</code>.
   It is now generated to include a <code class="literal">pwd</code> which has an empty string as its value.
   To restore the previous behaviour <code class="parameter">password</code> can now be set to <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
  </td>
 </tr>

 <tr>
  <td>8.4.0</td>
  <td>
   Previously, if <code class="parameter">dsn</code> contained <code class="literal">uid</code> or <code class="literal">pwd</code>
   both <code class="parameter">user</code> and <code class="parameter">password</code> parameters were ignored.
   Now <code class="parameter">user</code> is only ignored if <code class="parameter">dsn</code> contains
   <code class="literal">uid</code>, and <code class="parameter">password</code>  is only ignored if
   <code class="parameter">dsn</code> contains <code class="literal">pwd</code>.
  </td>
 </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.odbc-connect-examples">
  <h3 class="title">Examples</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Example #1 DSN-less connections</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Microsoft SQL Server using the SQL Native Client 10.0 ODBC Driver - allows connection to SQL 7, 2000, 2005 and 2008<br /></span><span style="color: #0000BB">$connection </span><span style="color: #007700">= </span><span style="color: #0000BB">odbc_connect</span><span style="color: #007700">(</span><span style="color: #DD0000">"Driver={SQL Server Native Client 10.0};Server=</span><span style="color: #0000BB">$server</span><span style="color: #DD0000">;Database=</span><span style="color: #0000BB">$database</span><span style="color: #DD0000">;"</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 /><br /></span><span style="color: #FF8000">// Microsoft Access<br /></span><span style="color: #0000BB">$connection </span><span style="color: #007700">= </span><span style="color: #0000BB">odbc_connect</span><span style="color: #007700">(</span><span style="color: #DD0000">"Driver={Microsoft Access Driver (*.mdb)};Dbq=</span><span style="color: #0000BB">$mdbFilename</span><span style="color: #DD0000">"</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 /><br /></span><span style="color: #FF8000">// Microsoft Excel<br /></span><span style="color: #0000BB">$excelFile </span><span style="color: #007700">= </span><span style="color: #0000BB">realpath</span><span style="color: #007700">(</span><span style="color: #DD0000">'C:/ExcelData.xls'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$excelDir </span><span style="color: #007700">= </span><span style="color: #0000BB">dirname</span><span style="color: #007700">(</span><span style="color: #0000BB">$excelFile</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$connection </span><span style="color: #007700">= </span><span style="color: #0000BB">odbc_connect</span><span style="color: #007700">(</span><span style="color: #DD0000">"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=</span><span style="color: #0000BB">$excelFile</span><span style="color: #DD0000">;DefaultDir=</span><span style="color: #0000BB">$excelDir</span><span style="color: #DD0000">" </span><span style="color: #007700">, </span><span style="color: #DD0000">''</span><span style="color: #007700">, </span><span style="color: #DD0000">''</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.odbc-connect-seealso">
  <h3 class="title">See Also</h3>
  <p class="para">
   <ul class="simplelist">
    <li>For persistent connections: <span class="function"><a href="function.odbc-pconnect.php" class="function" rel="rdfs-seeAlso">odbc_pconnect()</a> - Open a persistent database connection</span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>