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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
|
###################
DB Driver Reference
###################
This is the platform-independent base DB implementation class.
This class will not be called directly. Rather, the adapter
class for the specific database will extend and instantiate it.
The how-to material for this has been split over several articles.
This article is intended to be a reference for them.
.. class:: CI_DB_driver
.. method:: initialize()
:returns: TRUE on success, FALSE on failure
:rtype: boolean
Initialize Database Settings;
establish a connection to the database.
.. method:: db_pconnect()
:returns: TRUE on success, FALSE on failure
:rtype: boolean
Establish a persistent database connection
.. method:: reconnect()
:returns: TRUE on success, FALSE on failure
:rtype: boolean
Keep / reestablish the db connection if no queries have been
sent for a length of time exceeding the server's idle timeout.
This is only available in drivers that support it.
.. method:: db_select()
:returns: TRUE on success, FALSE on failure
:rtype: boolean
Select database
.. method:: db_set_charset($charset)
:param string $charset: Character set name
:returns: TRUE on success, FALSE on failure
:rtype: boolean
Set client character set
.. method:: platform()
:returns: Platform name
:rtype: string
The name of the platform in use (mysql, mssql, etc...)
.. method:: version()
:returns: The version of the database being used.
:rtype: string
Database version number
.. method:: query($sql[, $binds = FALSE[, $return_object = NULL]]])
:param string $sql: The SQL statement to execute
:param array $binds: An array of binding data
:param bool $return_object: Character set name
:returns: True on "update" success, DB_result object on "query" success, FALSE on failure
:rtype: mixed
Execute the query
Accepts an SQL string as input and returns a result object
upon
successful execution of a "read" type query. Returns boolean
TRUE
upon successful execution of a "write" type query.
Returns boolean
FALSE upon failure, and if the $db_debug variable is set
to TRUE
will raise an error.
.. method:: load_rdriver()
:returns: The DB_result object appropriate for the driver in use
:rtype: DB_result
Load the result drivers
.. method:: simple_query($sql)
:param string $sql: The SQL statement to execute
:returns: True on "update" success, DB_result object on "query" success, FALSE on failure
:rtype: mixed
Simple Query
This is a simplified version of the query() function. Internally
we only use it when running transaction commands since they do
not require all the features of the main query() function.
.. method:: trans_off()
:rtype: void
Disable Transactions.
This permits transactions to be disabled at run-time.
.. method:: trans_strict([$mode = TRUE])
:param boolean $mode: TRUE for strict mode
:rtype: void
Enable/disable Transaction Strict Mode.
When strict mode is enabled, if you are running multiple
groups of
transactions, if one group fails all groups will be rolled back.
If strict mode is disabled, each group is treated autonomously,
meaning
a failure of one group will not affect any others.
.. method:: trans_start([$test_mode = FALSE[)
:param boolean $test_mode: TRUE for testing mode
:rtype: void
Start Transaction.
.. method:: trans_complete()
:rtype: void
Complete Transaction.
.. method:: trans_status()
:returns: TRUE if the transaction succeeded, FALSE if it failed
:rtype: boolean
Lets you retrieve the transaction flag to determine if it
has failed.
.. method:: compile_binds($sql, $binds)
:param string $sql: The SQL statement
:param array $binds: An array of binding data
:returns: The updated SQL statement
:rtype: string
Compile Bindings
.. method:: is_write_type($sql)
:param string $sql: The SQL statement
:returns: TRUE if the SQL statement is a "write" type of statement
:rtype: boolean
Determines if a query is a "write" type.
.. method:: elapsed_time([$decimals = 6])
:param int $decimals: The number of decimal places
:returns: The aggregate query elapsed time, in microseconds
:rtype: string
Calculate the aggregate query elapsed time.
.. method:: total_queries()
:returns: The total number of queries
:rtype: int
Returns the total number of queries.
.. method:: last_query()
:returns: The last query executed
:rtype: string
Returns the last query that was executed.
.. method:: escape($str)
:param string $str: The string to work with
:returns: The escaped string
:rtype: mixed
"Smart" Escape String.
Escapes data based on type.
Sets boolean and null types
.. method:: escape_str($str[, $like = FALSE])
:param mixed $str: The string or array of strings to work with
:param boolean $like: Whether or not the string will be used in a LIKE condition
:returns: The escaped string(s)
:rtype: mixed
Escape String.
.. method:: escape_like_str($str)
:param mixed $str: The string or array of strings to work with
:returns: The escaped string(s)
:rtype: mixed
Escape LIKE String.
Calls the individual driver for platform
specific escaping for LIKE conditions.
.. method:: primary([$table = ''])
:param string $table: The table name
:returns: The primary key name, FALSE if none
:rtype: mixed
Primary.
Retrieves the primary key. It assumes that the row in the first
position is the primary key.
.. method:: count_all([$table = ''])
:param string $table: The table name
:returns: Record count for specified table
:rtype: int
"Count All" query.
Generates a platform-specific query string that counts
all records in
the specified database.
.. method:: list_tables([$constrain_by_prefix = FALSE])
:param boolean $constrain_by_prefix: TRUE to constrain the tables considered
:returns: Array of table names, FALSE if the operation is unsupported
:rtype: mixed
Returns an array of table names.
.. method:: table_exists($table_name)
:param string $table_name: The table name
:returns: TRUE if that table exists
:rtype: boolean
Determine if a particular table exists.
.. method:: list_fields([$table = ''])
:param string $table: The table name
:returns: Array of field names, FALSE if the table doesn't exist or the operation is un-supported
:rtype: mixed
Fetch Field Names.
.. method:: field_exists($field_name, $table_name)
:param string $table_name: The table name
:param string $field_name: The field name
:returns: TRUE if that field exists in that table
:rtype: boolean
Determine if a particular field exists.
.. method:: field_data([$table = ''])
:param string $table: The table name
:returns: Object with field data, FALSE if no table given
:rtype: mixed
Returns an object with field data.
.. method:: escape_identifiers($item)
:param mixed $item: The item or array of items to escape
:returns: The item(s), escaped
:rtype: mixed
Escape the SQL Identifiers.
This function escapes column and table names
.. method:: insert_string($table, $data)
:param string $table: The table upon which the query will be performed
:param array $data: an associative array of data key/values
:returns: The SQL insert string
:rtype: string
Generate an insert string.
.. method:: update_string($table, $data, $where)
:param string $table: The table upon which the query will be performed
:param array $data: an associative array of data key/values
:param mixed $where: the "where" statement
:returns: The SQL update string
:rtype: string
Generate an update string.
.. method:: call_function($function)
:param string $function: Function name
:returns: The function result
:rtype: string
Enables a native PHP function to be run, using a platform
agnostic wrapper.
.. method:: cache_set_path([$path = ''])
:param string $path: the path to the cache directory
:rtype: void
Set Cache Directory Path.
.. method:: cache_on()
:returns: cache_on value
:rtype: boolean
Enable Query Caching.
.. method:: cache_off()
:returns: cache_on value
:rtype: boolean
Disable Query Caching.
.. method:: cache_delete([$segment_one = ''[, $segment_two = '']])
:param string $segment_one: first URI segment
:param string $segment_two: second URI segment
:returns: TRUE on success, FALSE on failure
:rtype: boolean
Delete the cache files associated with a particular URI
.. method:: cache_delete_all()
:returns: TRUE on success, FALSE on failure
:rtype: boolean
Delete All cache files
.. method:: close()
:rtype: void
Close DB Connection
.. method:: display_error([$error = ''[, $swap = ''[, $native = FALSE]]])
:param string $error: the error message
:param string $swap: any "swap" values
:param boolean $native: whether to localize the message
:returns: sends the application/views/errors/error_db.php template
:rtype: string
Display an error message
.. method:: protect_identifiers($item[, $prefix_single = FALSE[, $protect_identifiers = NULL[, $field_exists = TRUE]]])
:param string $item: the item
:param boolean $prefix_single: whether to use a single prefix
:param boolean $protect_identifiers: whether to protect identifiers
:param boolean $field_exists: whether the supplied item does not contain a field name.
:returns: the modified item
:rtype: string
Protect Identifiers.
This function is used extensively by the Query Builder class,
and by
a couple functions in this class.
It takes a column or table name (optionally with an alias)
and inserts
the table prefix onto it. Some logic is necessary in order
to deal with
column names that include the path. Consider a query like this::
SELECT * FROM hostname.database.table.column AS c FROM hostname.database.table
Or a query with aliasing::
SELECT m.member_id, m.member_name FROM members AS m
Since the column name can include up to four segments
(host, DB, table, column)
or also have an alias prefix, we need to do a bit of work
to figure this out and
insert the table prefix (if it exists) in the proper position,
and escape only
the correct identifiers.
|