blob: a834cc0f799a037725d441c0ec905542f78eec6e [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).
39#. TRUE/FALSE (boolean). Whether to enable the Active Record class. Set
40 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
125Reconnecting / Keeping the Connection Alive
126===========================================
127
128If the database server's idle timeout is exceeded while you're doing
129some heavy PHP lifting (processing an image, for instance), you should
130consider pinging the server by using the reconnect() method before
131sending further queries, which can gracefully keep the connection alive
132or re-establish it.
133
134::
135
136 $this->db->reconnect();
137
138Manually closing the Connection
139===============================
140
141While CodeIgniter intelligently takes care of closing your database
142connections, you can explicitly close the connection.
143
144::
145
146 $this->db->close();
147