1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
###########################
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();
|