blob: 5822ca62c9e6ae58c94b3d33ffc565796901c075 [file] [log] [blame]
Derek Jones8ede1a22011-10-05 13:34:52 -05001###########################
2Connecting to your Database
3###########################
4
5There are two ways to connect to a database:
6
7Automatically Connecting
8========================
9
10The "auto connect" feature will load and instantiate the database class
11with every page load. To enable "auto connecting", add the word database
12to the library array, as indicated in the following file:
13
14application/config/autoload.php
15
16Manually Connecting
17===================
18
19If only some of your pages require database connectivity you can
20manually connect to your database by adding this line of code in any
21function where it is needed, or in your class constructor to make the
22database available globally in that class.
23
24::
25
26 $this->load->database();
27
28If the above function does **not** contain any information in the first
29parameter it will connect to the group specified in your database config
30file. For most people, this is the preferred method of use.
31
32Available Parameters
33--------------------
34
35#. The database connection values, passed either as an array or a DSN
36 string.
37#. TRUE/FALSE (boolean). Whether to return the connection ID (see
38 Connecting to Multiple Databases below).
Jamie Rumbelow7efad202012-02-19 12:37:00 +000039#. TRUE/FALSE (boolean). Whether to enable the Query Builder class. Set
Derek Jones8ede1a22011-10-05 13:34:52 -050040 to TRUE by default.
41
42Manually Connecting to a Database
43---------------------------------
44
45The first parameter of this function can **optionally** be used to
46specify a particular database group from your config file, or you can
47even submit connection values for a database that is not specified in
48your config file. Examples:
49
50To choose a specific group from your config file you can do this::
51
52 $this->load->database('group_name');
53
54Where group_name is the name of the connection group from your config
55file.
56
57To connect manually to a desired database you can pass an array of
58values::
59
Timothy Warren5c3aaca2011-10-31 13:31:30 -030060 $config['hostname'] = "localhost";
61 $config['username'] = "myusername";
62 $config['password'] = "mypassword";
63 $config['database'] = "mydatabase";
64 $config['dbdriver'] = "mysql";
65 $config['dbprefix'] = "";
66 $config['pconnect'] = FALSE;
67 $config['db_debug'] = TRUE;
68 $config['cache_on'] = FALSE;
69 $config['cachedir'] = "";
70 $config['char_set'] = "utf8";
71 $config['dbcollat'] = "utf8_general_ci";
72 $this->load->database($config);
Derek Jones8ede1a22011-10-05 13:34:52 -050073
74For information on each of these values please see the :doc:`configuration
75page <configuration>`.
76
77.. note:: For the PDO driver, $config['hostname'] should look like
78 this: 'mysql:host=localhost'
79
80Or you can submit your database values as a Data Source Name. DSNs must
81have this prototype::
82
Timothy Warren5c3aaca2011-10-31 13:31:30 -030083 $dsn = 'dbdriver://username:password@hostname/database';
84 $this->load->database($dsn);
Derek Jones8ede1a22011-10-05 13:34:52 -050085
86To override default config values when connecting with a DSN string, add
87the config variables as a query string.
88
89::
90
Timothy Warren5c3aaca2011-10-31 13:31:30 -030091 $dsn = 'dbdriver://username:password@hostname/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache';
92 $this->load->database($dsn);
Derek Jones8ede1a22011-10-05 13:34:52 -050093
94Connecting to Multiple Databases
95================================
96
97If you need to connect to more than one database simultaneously you can
98do so as follows::
99
Timothy Warren5c3aaca2011-10-31 13:31:30 -0300100 $DB1 = $this->load->database('group_one', TRUE);
101 $DB2 = $this->load->database('group_two', TRUE);
Derek Jones8ede1a22011-10-05 13:34:52 -0500102
103Note: Change the words "group_one" and "group_two" to the specific
104group names you are connecting to (or you can pass the connection values
105as indicated above).
106
107By setting the second parameter to TRUE (boolean) the function will
108return the database object.
109
Joseph Wensleyf24f4042011-10-06 22:53:29 -0400110.. note:: When you connect this way, you will use your object name to issue
111 commands rather than the syntax used throughout this guide. In other
112 words, rather than issuing commands with:
113
114 |
115 | $this->db->query();
116 | $this->db->result();
117 | etc...
118 |
119 | You will instead use:
120 |
121 | $DB1->query();
122 | $DB1->result();
123 | etc...
Derek Jones8ede1a22011-10-05 13:34:52 -0500124
Andrey Andreev11454e02012-02-22 16:05:47 +0200125.. note:: You don't need to create separate database configurations if you
126 only need to use a different database on the same connection. You
127 can switch to a different database when you need to, like this:
128
129 | $this->db->db_select($database2_name);
130
Derek Jones8ede1a22011-10-05 13:34:52 -0500131Reconnecting / Keeping the Connection Alive
132===========================================
133
134If the database server's idle timeout is exceeded while you're doing
135some heavy PHP lifting (processing an image, for instance), you should
136consider pinging the server by using the reconnect() method before
137sending further queries, which can gracefully keep the connection alive
138or re-establish it.
139
140::
141
142 $this->db->reconnect();
143
144Manually closing the Connection
145===============================
146
147While CodeIgniter intelligently takes care of closing your database
148connections, you can explicitly close the connection.
149
150::
151
152 $this->db->close();
153