|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00032 class Zend_Amf_Parse_Resource_MysqliResult 00033 { 00034 00038 static public $mysqli_type = array( 00039 0 => "MYSQLI_TYPE_DECIMAL", 00040 1 => "MYSQLI_TYPE_TINYINT", 00041 2 => "MYSQLI_TYPE_SMALLINT", 00042 3 => "MYSQLI_TYPE_INTEGER", 00043 4 => "MYSQLI_TYPE_FLOAT", 00044 5 => "MYSQLI_TYPE_DOUBLE", 00045 7 => "MYSQLI_TYPE_TIMESTAMP", 00046 8 => "MYSQLI_TYPE_BIGINT", 00047 9 => "MYSQLI_TYPE_MEDIUMINT", 00048 10 => "MYSQLI_TYPE_DATE", 00049 11 => "MYSQLI_TYPE_TIME", 00050 12 => "MYSQLI_TYPE_DATETIME", 00051 13 => "MYSQLI_TYPE_YEAR", 00052 14 => "MYSQLI_TYPE_DATE", 00053 16 => "MYSQLI_TYPE_BIT", 00054 246 => "MYSQLI_TYPE_DECIMAL", 00055 247 => "MYSQLI_TYPE_ENUM", 00056 248 => "MYSQLI_TYPE_SET", 00057 249 => "MYSQLI_TYPE_TINYBLOB", 00058 250 => "MYSQLI_TYPE_MEDIUMBLOB", 00059 251 => "MYSQLI_TYPE_LONGBLOB", 00060 252 => "MYSQLI_TYPE_BLOB", 00061 253 => "MYSQLI_TYPE_VARCHAR", 00062 254 => "MYSQLI_TYPE_CHAR", 00063 255 => "MYSQLI_TYPE_GEOMETRY", 00064 ); 00065 00066 // Build an associative array for a type look up 00067 static $mysqli_to_php = array( 00068 "MYSQLI_TYPE_DECIMAL" => 'float', 00069 "MYSQLI_TYPE_NEWDECIMAL" => 'float', 00070 "MYSQLI_TYPE_BIT" => 'integer', 00071 "MYSQLI_TYPE_TINYINT" => 'integer', 00072 "MYSQLI_TYPE_SMALLINT" => 'integer', 00073 "MYSQLI_TYPE_MEDIUMINT" => 'integer', 00074 "MYSQLI_TYPE_BIGINT" => 'integer', 00075 "MYSQLI_TYPE_INTEGER" => 'integer', 00076 "MYSQLI_TYPE_FLOAT" => 'float', 00077 "MYSQLI_TYPE_DOUBLE" => 'float', 00078 "MYSQLI_TYPE_NULL" => 'null', 00079 "MYSQLI_TYPE_TIMESTAMP" => 'string', 00080 "MYSQLI_TYPE_INT24" => 'integer', 00081 "MYSQLI_TYPE_DATE" => 'string', 00082 "MYSQLI_TYPE_TIME" => 'string', 00083 "MYSQLI_TYPE_DATETIME" => 'string', 00084 "MYSQLI_TYPE_YEAR" => 'string', 00085 "MYSQLI_TYPE_NEWDATE" => 'string', 00086 "MYSQLI_TYPE_ENUM" => 'string', 00087 "MYSQLI_TYPE_SET" => 'string', 00088 "MYSQLI_TYPE_TINYBLOB" => 'object', 00089 "MYSQLI_TYPE_MEDIUMBLOB" => 'object', 00090 "MYSQLI_TYPE_LONGBLOB" => 'object', 00091 "MYSQLI_TYPE_BLOB" => 'object', 00092 "MYSQLI_TYPE_CHAR" => 'string', 00093 "MYSQLI_TYPE_VARCHAR" => 'string', 00094 "MYSQLI_TYPE_GEOMETRY" => 'object', 00095 "MYSQLI_TYPE_BIT" => 'integer', 00096 ); 00097 00104 public function parse($resource) { 00105 00106 $result = array(); 00107 $fieldcnt = mysqli_num_fields($resource); 00108 00109 00110 $fields_transform = array(); 00111 00112 for($i=0;$i<$fieldcnt;$i++) { 00113 $finfo = mysqli_fetch_field_direct($resource, $i); 00114 00115 if(isset(self::$mysqli_type[$finfo->type])) { 00116 $fields_transform[$finfo->name] = self::$mysqli_to_php[self::$mysqli_type[$finfo->type]]; 00117 } 00118 } 00119 00120 while($row = mysqli_fetch_assoc($resource)) { 00121 foreach($fields_transform as $fieldname => $fieldtype) { 00122 settype($row[$fieldname], $fieldtype); 00123 } 00124 $result[] = $row; 00125 } 00126 return $result; 00127 } 00128 }