MDL-55660 tablelib: Fetch only a single row when auto defining columns
authorDavid Mudrák <david@moodle.com>
Mon, 22 Aug 2016 14:29:11 +0000 (16:29 +0200)
committerDavid Mudrák <david@moodle.com>
Mon, 22 Aug 2016 14:34:13 +0000 (16:34 +0200)
In a very rare cases where the columns are not declared explicitly, we
want to fetch single row only without a warning raised. This seems like
a valid use case for IGNORE_MULTIPLE flag.

lib/tablelib.php

index 3ab0070..05b86f5 100644 (file)
@@ -1598,7 +1598,8 @@ class table_sql extends flexible_table {
     function out($pagesize, $useinitialsbar, $downloadhelpbutton='') {
         global $DB;
         if (!$this->columns) {
-            $onerow = $DB->get_record_sql("SELECT {$this->sql->fields} FROM {$this->sql->from} WHERE {$this->sql->where}", $this->sql->params);
+            $onerow = $DB->get_record_sql("SELECT {$this->sql->fields} FROM {$this->sql->from} WHERE {$this->sql->where}",
+                $this->sql->params, IGNORE_MULTIPLE);
             //if columns is not set then define columns as the keys of the rows returned
             //from the db.
             $this->define_columns(array_keys((array)$onerow));