155 lines
4.6 KiB
ReStructuredText
155 lines
4.6 KiB
ReStructuredText
###########################
|
|
Connecting to your Database
|
|
###########################
|
|
|
|
There are two ways to connect to a database:
|
|
|
|
Automatically Connecting
|
|
========================
|
|
|
|
The "auto connect" feature will load and instantiate the database class
|
|
with every page load. To enable "auto connecting", add the word database
|
|
to the library array, as indicated in the following file:
|
|
|
|
application/config/autoload.php
|
|
|
|
Manually Connecting
|
|
===================
|
|
|
|
If only some of your pages require database connectivity you can
|
|
manually connect to your database by adding this line of code in any
|
|
function where it is needed, or in your class constructor to make the
|
|
database available globally in that class.
|
|
|
|
::
|
|
|
|
$this->load->database();
|
|
|
|
If the above function does **not** contain any information in the first
|
|
parameter it will connect to the group specified in your database config
|
|
file. For most people, this is the preferred method of use.
|
|
|
|
Available Parameters
|
|
--------------------
|
|
|
|
#. The database connection values, passed either as an array or a DSN
|
|
string.
|
|
#. TRUE/FALSE (boolean). Whether to return the connection ID (see
|
|
Connecting to Multiple Databases below).
|
|
#. TRUE/FALSE (boolean). Whether to enable the Query Builder class. Set
|
|
to TRUE by default.
|
|
|
|
Manually Connecting to a Database
|
|
---------------------------------
|
|
|
|
The first parameter of this function can **optionally** be used to
|
|
specify a particular database group from your config file, or you can
|
|
even submit connection values for a database that is not specified in
|
|
your config file. Examples:
|
|
|
|
To choose a specific group from your config file you can do this::
|
|
|
|
$this->load->database('group_name');
|
|
|
|
Where group_name is the name of the connection group from your config
|
|
file.
|
|
|
|
To connect manually to a desired database you can pass an array of
|
|
values::
|
|
|
|
$config['hostname'] = 'localhost';
|
|
$config['username'] = 'myusername';
|
|
$config['password'] = 'mypassword';
|
|
$config['database'] = 'mydatabase';
|
|
$config['dbdriver'] = 'mysqli';
|
|
$config['dbprefix'] = '';
|
|
$config['pconnect'] = FALSE;
|
|
$config['db_debug'] = TRUE;
|
|
$config['cache_on'] = FALSE;
|
|
$config['cachedir'] = '';
|
|
$config['char_set'] = 'utf8';
|
|
$config['dbcollat'] = 'utf8_general_ci';
|
|
$this->load->database($config);
|
|
|
|
For information on each of these values please see the :doc:`configuration
|
|
page <configuration>`.
|
|
|
|
.. note:: For the PDO driver, you should use the $config['dsn'] setting
|
|
instead of 'hostname' and 'database':
|
|
|
|
|
|
|
| $config['dsn'] = 'mysql:host=localhost;dbname=mydatabase';
|
|
|
|
Or you can submit your database values as a Data Source Name. DSNs must
|
|
have this prototype::
|
|
|
|
$dsn = 'dbdriver://username:password@hostname/database';
|
|
$this->load->database($dsn);
|
|
|
|
To override default config values when connecting with a DSN string, add
|
|
the config variables as a query string.
|
|
|
|
::
|
|
|
|
$dsn = 'dbdriver://username:password@hostname/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache';
|
|
$this->load->database($dsn);
|
|
|
|
Connecting to Multiple Databases
|
|
================================
|
|
|
|
If you need to connect to more than one database simultaneously you can
|
|
do so as follows::
|
|
|
|
$DB1 = $this->load->database('group_one', TRUE);
|
|
$DB2 = $this->load->database('group_two', TRUE);
|
|
|
|
Note: Change the words "group_one" and "group_two" to the specific
|
|
group names you are connecting to (or you can pass the connection values
|
|
as indicated above).
|
|
|
|
By setting the second parameter to TRUE (boolean) the function will
|
|
return the database object.
|
|
|
|
.. note:: When you connect this way, you will use your object name to issue
|
|
commands rather than the syntax used throughout this guide. In other
|
|
words, rather than issuing commands with:
|
|
|
|
|
|
|
| $this->db->query();
|
|
| $this->db->result();
|
|
| etc...
|
|
|
|
|
| You will instead use:
|
|
|
|
|
| $DB1->query();
|
|
| $DB1->result();
|
|
| etc...
|
|
|
|
.. note:: You don't need to create separate database configurations if you
|
|
only need to use a different database on the same connection. You
|
|
can switch to a different database when you need to, like this:
|
|
|
|
| $this->db->db_select($database2_name);
|
|
|
|
Reconnecting / Keeping the Connection Alive
|
|
===========================================
|
|
|
|
If the database server's idle timeout is exceeded while you're doing
|
|
some heavy PHP lifting (processing an image, for instance), you should
|
|
consider pinging the server by using the reconnect() method before
|
|
sending further queries, which can gracefully keep the connection alive
|
|
or re-establish it.
|
|
|
|
::
|
|
|
|
$this->db->reconnect();
|
|
|
|
Manually closing the Connection
|
|
===============================
|
|
|
|
While CodeIgniter intelligently takes care of closing your database
|
|
connections, you can explicitly close the connection.
|
|
|
|
::
|
|
|
|
$this->db->close(); |