private $dbcon;\r
private $_queryString = '';\r
\r
+ private $def_fetch_mode = PDO::FETCH_BOTH;\r
private $def_col_num = 0;\r
private $def_class_name = 'stdClass';\r
private $def_ctorargs = null;\r
return FALSE;\r
}\r
\r
- public function fetch($fetch_style, $cursor_orientation = PDO::FETCH_ORI_NEXT, $cursor_offset = 0)\r
+ public function fetch($fetch_style = PDO::ATTR_DEFAULT_FETCH_MODE, $cursor_orientation = PDO::FETCH_ORI_NEXT, $cursor_offset = 0)\r
{\r
if ( !is_resource($this->result) || $cursor_orientation != PDO::FETCH_ORI_NEXT )\r
{\r
return FALSE;\r
}\r
+ \r
+ if ( $fetch_style == PDO::ATTR_DEFAULT_FETCH_MODE )\r
+ {\r
+ $fetch_style = $this->def_fetch_mode;\r
+ }\r
\r
switch ( $fetch_style )\r
{\r
case PDO::FETCH_NUM:\r
return @call_user_func(MysqlPDO::$handler . 'fetch_array', $this->result, MYSQL_NUM);\r
case PDO::FETCH_OBJ:\r
- return $this->fetchObject('stdClass');\r
- case PDO::FETCH_CLASS:\r
return $this->fetchObject();\r
+ case PDO::FETCH_CLASS:\r
+ return $this->fetchObject($this->def_class_name, $this->def_ctorargs);\r
+ case PDO::FETCH_COLUMN:\r
+ return $this->fetchColumn($this->def_col_num);\r
case PDO::FETCH_BOUND:\r
return FALSE; // Not supported\r
case PDO::FETCH_INTO:\r
}\r
}\r
\r
- public function fetchAll($fetch_style, $fetch_argument, $ctor_args = array())\r
+ public function fetchAll($fetch_style = PDO::ATTR_DEFAULT_FETCH_MODE, $fetch_argument = null, $ctor_args = array())\r
{\r
- if ( ($fetch_style & PDO::FETCH_COLUMN) != 0 )\r
+ if ( $fetch_style == PDO::ATTR_DEFAULT_FETCH_MODE )\r
{\r
- return FALSE;\r
+ $fetch_style = PDO::FETCH_BOTH;\r
}\r
-\r
+ \r
$ret = array();\r
- while ( $row = $this->fetch(PDO::FETCH_BOTH) )\r
+ if ( ($fetch_style & PDO::FETCH_COLUMN) != 0 )\r
+ {\r
+ if ( $fetch_style == PDO::FETCH_COLUMN )\r
+ {\r
+ $column = $fetch_argument == null ? 0 : intval($fetch_argument);\r
+ while ( $row = $this->fetchColumn($column) )\r
+ {\r
+ $ret[] = $row;\r
+ }\r
+ }\r
+ elseif ( ($fetch_style & PDO::FETCH_UNIQUE) != 0 )\r
+ {\r
+ return FALSE;\r
+ }\r
+ elseif ( ($fetch_style & PDO::FETCH_GROUP) != 0 )\r
+ {\r
+ return FALSE;\r
+ }\r
+ }\r
+ elseif ( $fetch_style == PDO::FETCH_CLASS )\r
+ {\r
+ while ( $row = $this->fetchObject($fetch_argument, $ctor_args) )\r
+ {\r
+ $ret[] = $row;\r
+ }\r
+ }\r
+ elseif ( $fetch_style == PDO::FETCH_FUNC )\r
+ {\r
+ while ( $row = $this->fetch(PDO::FETCH_ASSOC) )\r
+ {\r
+ $ret[] = call_user_func_array($fetch_argument, array_values($row));\r
+ }\r
+ }\r
+ else\r
{\r
- $ret[] = $row;\r
+ while ( $row = $this->fetch($fetch_style) )\r
+ {\r
+ $ret[] = $row;\r
+ }\r
}\r
return $ret;\r
}\r
\r
- public function fetchColumn($column_number = null)\r
+ public function fetchColumn($column_number = 0)\r
{\r
- if ( !isset($column_number) )\r
+ if ( $ret = $this->fetch(PDO::FETCH_NUM) )\r
{\r
- $column_number = $this->def_col_num;\r
+ return $ret[$column_number];\r
}\r
- $ret = $this->fetch(PDO::FETCH_NUM);\r
- return $ret[$column_number];\r
+ return FALSE;\r
}\r
\r
- public function fetchObject($class_name = null, $ctor_args = null)\r
+ public function fetchObject($class_name = 'stdClass', $ctor_args = null)\r
{\r
- $c_name = isset($class_name) ? $class_name : $this->def_class_name;\r
- $c_args = isset($ctor_args) ? $ctor_args : $this->def_ctorargs;\r
- if ( $c_args == null )\r
+ if ( is_array($ctor_args) && !empty($ctor_args) )\r
{\r
- return @call_user_func(MysqlPDO::$handler . 'fetch_object', $this->result, $c_name);\r
+ return @call_user_func(MysqlPDO::$handler . 'fetch_object', $this->result, $class_name, $ctor_args);\r
}\r
else\r
{\r
- return @call_user_func(MysqlPDO::$handler . 'fetch_object', $this->result, $c_name, $c_args);\r
+ return @call_user_func(MysqlPDO::$handler . 'fetch_object', $this->result, $class_name);\r
}\r
}\r
\r
\r
public function rowCount()\r
{\r
- if ( @call_user_func(MysqlPDO::$handler . 'affected_rows', $this->result) == FALSE )\r
- {\r
- return @call_user_func(MysqlPDO::$handler . 'num_rows', $this->result);\r
- }\r
- else\r
- {\r
- return @call_user_func(MysqlPDO::$handler . 'affected_rows', $this->result);\r
- }\r
+ return @call_user_func(MysqlPDO::$handler . 'affected_rows', $this->dbcon);\r
}\r
\r
/**\r
case PDO::FETCH_INTO:\r
$this->bind_object = &$mode_argument;\r
return FALSE; // Not supported\r
+ default:\r
+ $this->def_fetch_mode = $mode;\r
+ break;\r
}\r
return 1;\r
}\r
\r
function valid()\r
{\r
- return ($this->iterator_value = $this->fetch(PDO::FETCH_BOTH));\r
+ return ($this->iterator_value = $this->fetch());\r
}\r
\r
function current()\r