Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 1 | ########################### |
| 2 | Connecting to your Database |
| 3 | ########################### |
| 4 | |
| 5 | There are two ways to connect to a database: |
| 6 | |
| 7 | Automatically Connecting |
| 8 | ======================== |
| 9 | |
| 10 | The "auto connect" feature will load and instantiate the database class |
| 11 | with every page load. To enable "auto connecting", add the word database |
| 12 | to the library array, as indicated in the following file: |
| 13 | |
| 14 | application/config/autoload.php |
| 15 | |
| 16 | Manually Connecting |
| 17 | =================== |
| 18 | |
| 19 | If only some of your pages require database connectivity you can |
| 20 | manually connect to your database by adding this line of code in any |
| 21 | function where it is needed, or in your class constructor to make the |
| 22 | database available globally in that class. |
| 23 | |
| 24 | :: |
| 25 | |
| 26 | $this->load->database(); |
| 27 | |
| 28 | If the above function does **not** contain any information in the first |
| 29 | parameter it will connect to the group specified in your database config |
| 30 | file. For most people, this is the preferred method of use. |
| 31 | |
| 32 | Available 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 | |
| 42 | Manually Connecting to a Database |
| 43 | --------------------------------- |
| 44 | |
| 45 | The first parameter of this function can **optionally** be used to |
| 46 | specify a particular database group from your config file, or you can |
| 47 | even submit connection values for a database that is not specified in |
| 48 | your config file. Examples: |
| 49 | |
| 50 | To choose a specific group from your config file you can do this:: |
| 51 | |
| 52 | $this->load->database('group_name'); |
| 53 | |
| 54 | Where group_name is the name of the connection group from your config |
| 55 | file. |
| 56 | |
| 57 | To connect manually to a desired database you can pass an array of |
| 58 | values:: |
| 59 | |
| 60 | $config['hostname'] = "localhost"; $config['username'] = "myusername"; $config['password'] = "mypassword"; $config['database'] = "mydatabase"; $config['dbdriver'] = "mysql"; $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); |
| 61 | |
| 62 | For information on each of these values please see the :doc:`configuration |
| 63 | page <configuration>`. |
| 64 | |
| 65 | .. note:: For the PDO driver, $config['hostname'] should look like |
| 66 | this: 'mysql:host=localhost' |
| 67 | |
| 68 | Or you can submit your database values as a Data Source Name. DSNs must |
| 69 | have this prototype:: |
| 70 | |
| 71 | $dsn = 'dbdriver://username:password@hostname/database'; $this->load->database($dsn); |
| 72 | |
| 73 | To override default config values when connecting with a DSN string, add |
| 74 | the config variables as a query string. |
| 75 | |
| 76 | :: |
| 77 | |
| 78 | $dsn = 'dbdriver://username:password@hostname/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache'; $this->load->database($dsn); |
| 79 | |
| 80 | Connecting to Multiple Databases |
| 81 | ================================ |
| 82 | |
| 83 | If you need to connect to more than one database simultaneously you can |
| 84 | do so as follows:: |
| 85 | |
| 86 | $DB1 = $this->load->database('group_one', TRUE); $DB2 = $this->load->database('group_two', TRUE); |
| 87 | |
| 88 | Note: Change the words "group_one" and "group_two" to the specific |
| 89 | group names you are connecting to (or you can pass the connection values |
| 90 | as indicated above). |
| 91 | |
| 92 | By setting the second parameter to TRUE (boolean) the function will |
| 93 | return the database object. |
| 94 | |
Joseph Wensley | f24f404 | 2011-10-06 22:53:29 -0400 | [diff] [blame^] | 95 | .. note:: When you connect this way, you will use your object name to issue |
| 96 | commands rather than the syntax used throughout this guide. In other |
| 97 | words, rather than issuing commands with: |
| 98 | |
| 99 | | |
| 100 | | $this->db->query(); |
| 101 | | $this->db->result(); |
| 102 | | etc... |
| 103 | | |
| 104 | | You will instead use: |
| 105 | | |
| 106 | | $DB1->query(); |
| 107 | | $DB1->result(); |
| 108 | | etc... |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 109 | |
| 110 | Reconnecting / Keeping the Connection Alive |
| 111 | =========================================== |
| 112 | |
| 113 | If the database server's idle timeout is exceeded while you're doing |
| 114 | some heavy PHP lifting (processing an image, for instance), you should |
| 115 | consider pinging the server by using the reconnect() method before |
| 116 | sending further queries, which can gracefully keep the connection alive |
| 117 | or re-establish it. |
| 118 | |
| 119 | :: |
| 120 | |
| 121 | $this->db->reconnect(); |
| 122 | |
| 123 | Manually closing the Connection |
| 124 | =============================== |
| 125 | |
| 126 | While CodeIgniter intelligently takes care of closing your database |
| 127 | connections, you can explicitly close the connection. |
| 128 | |
| 129 | :: |
| 130 | |
| 131 | $this->db->close(); |
| 132 | |