Details
-
Type:
Sub-task
-
Status:
Closed
-
Priority:
Critical
-
Resolution: Fixed
-
Affects Version/s: 2.0
-
Fix Version/s: 2.0
-
Component/s: Database SQL/XMLDB
-
Labels:None
-
Affected Branches:MOODLE_20_STABLE
-
Fixed Branches:MOODLE_20_STABLE
Description
Since the new DML 2.0 API is now in place, all code using the old dmllib needs to be upgraded. In essence, this means the following changes:
1. Wherever old functions are used (get_record*, get_field*, set_field, insert_record, update_record), the global $DB must be used as the object on which these functions are called (e.g. get_record_select becomes $DB->get_record_select).
2. All the functions that used to accept a list of string params in the form "param1, value1, param2, value2" now need to be given an array of key=>value pairs as a replacement for these params. Other params remain as before. Check the new API for any exceptions.
3. rs_fetch_next_record($rs) is deprecated, in favour of the simple foreach($rs as $var). Calls to rs_close() must be replaced by $rs->close();
As an example to #3, if you have the original code:
while($result = rs_fetch_next_record($rs)) {
...
}
rs_close();
you would replace it with
foreach ($rs as $result) {
....
}
$rs->close();
Issue Links
| This issue is a clone of: | ||||
| MDL-15094 | M2-M3-M4 Upgrade all code using DML |
|
|
|
todo:
1/ remove addslashes
2/ use placeholders in SQL
3/ fix function parameters, each $sql part needs $params array