_queries); $i < $nb; $i++) { if ($this->_queries[$i]['query'] != $query) { continue; } $this->_queries[$i]['pos'] = 0; if (!is_array($this->_queries[$i]['result'])) { return false; } return $i; } for ($i = 0, $nb = count($GLOBALS['dummy_queries']); $i < $nb; $i++) { if ($GLOBALS['dummy_queries'][$i]['query'] != $query) { continue; } $GLOBALS['dummy_queries'][$i]['pos'] = 0; if (!is_array($GLOBALS['dummy_queries'][$i]['result'])) { return false; } return $i + self::OFFSET_GLOBAL; } echo "Not supported query: $query\n"; return false; } /** * Run the multi query and output the results * * @param resource $link connection object * @param string $query multi query statement to execute * * @return array|bool */ public function realMultiQuery($link, $query) { return false; } /** * returns result data from $result * * @param object $result MySQL result * * @return array */ public function fetchAny($result) { $query_data = &$this->getQueryData($result); if ($query_data['pos'] >= count($query_data['result'])) { return false; } $ret = $query_data['result'][$query_data['pos']]; $query_data['pos'] += 1; return $ret; } /** * returns array of rows with associative and numeric keys from $result * * @param object $result result MySQL result * * @return array */ public function fetchArray($result) { $query_data = &$this->getQueryData($result); $data = $this->fetchAny($result); if (!is_array($data) || !isset($query_data['columns']) ) { return $data; } foreach ($data as $key => $val) { $data[$query_data['columns'][$key]] = $val; } return $data; } /** * returns array of rows with associative keys from $result * * @param object $result MySQL result * * @return array */ public function fetchAssoc($result) { $data = $this->fetchAny($result); $query_data = &$this->getQueryData($result); if (!is_array($data) || !isset($query_data['columns'])) { return $data; } $ret = array(); foreach ($data as $key => $val) { $ret[$query_data['columns'][$key]] = $val; } return $ret; } /** * returns array of rows with numeric keys from $result * * @param object $result MySQL result * * @return array */ public function fetchRow($result) { $data = $this->fetchAny($result); return $data; } /** * Adjusts the result pointer to an arbitrary row in the result * * @param object $result database result * @param integer $offset offset to seek * * @return bool true on success, false on failure */ public function dataSeek($result, $offset) { $query_data = &$this->getQueryData($result); if ($offset > count($query_data['result'])) { return false; } $query_data['pos'] = $offset; return true; } /** * Frees memory associated with the result * * @param object $result database result * * @return void */ public function freeResult($result) { return; } /** * Check if there are any more query results from a multi query * * @param resource $link the connection object * * @return bool false */ public function moreResults($link) { return false; } /** * Prepare next result from multi_query * * @param resource $link the connection object * * @return boolean false */ public function nextResult($link) { return false; } /** * Store the result returned from multi query * * @param resource $link the connection object * * @return mixed false when empty results / result set when not empty */ public function storeResult($link) { return false; } /** * Returns a string representing the type of connection used * * @param resource $link mysql link * * @return string type of connection used */ public function getHostInfo($link) { return ''; } /** * Returns the version of the MySQL protocol used * * @param resource $link mysql link * * @return integer version of the MySQL protocol used */ public function getProtoInfo($link) { return -1; } /** * returns a string that represents the client library version * * @return string MySQL client library version */ public function getClientInfo() { return ''; } /** * returns last error message or false if no errors occurred * * @param resource $link connection link * * @return string|bool $error or false */ public function getError($link) { return false; } /** * returns the number of rows returned by last query * * @param object $result MySQL result * * @return string|int */ public function numRows($result) { if (is_bool($result)) { return 0; } $query_data = &$this->getQueryData($result); return count($query_data['result']); } /** * returns the number of rows affected by last query * * @param resource $link the mysql object * @param bool $get_from_cache whether to retrieve from cache * * @return string|int */ public function affectedRows($link = null, $get_from_cache = true) { return 0; } /** * returns metainfo for fields in $result * * @param object $result result set identifier * * @return array meta info for fields in $result */ public function getFieldsMeta($result) { return array(); } /** * return number of fields in given $result * * @param object $result MySQL result * * @return int field count */ public function numFields($result) { $query_data = &$this->getQueryData($result); if (!isset($query_data['columns'])) { return 0; } return count($query_data['columns']); } /** * returns the length of the given field $i in $result * * @param object $result result set identifier * @param int $i field * * @return int length of field */ public function fieldLen($result, $i) { return -1; } /** * returns name of $i. field in $result * * @param object $result result set identifier * @param int $i field * * @return string name of $i. field in $result */ public function fieldName($result, $i) { return ''; } /** * returns concatenated string of human readable field flags * * @param object $result result set identifier * @param int $i field * * @return string field flags */ public function fieldFlags($result, $i) { return ''; } /** * returns properly escaped string for use in MySQL queries * * @param mixed $link database link * @param string $str string to be escaped * * @return string a MySQL escaped string */ public function escapeString($link, $str) { return $str; } /** * Adds query result for testing * * @param string $query SQL * @param array $result Expected result * * @return void */ public function setResult($query, $result) { $this->_queries[] = array( 'query' => $query, 'result' => $result, ); } /** * Return query data for ID * * @param object $result result set identifier * * @return array */ private function &getQueryData($result) { if ($result >= self::OFFSET_GLOBAL) { return $GLOBALS['dummy_queries'][$result - self::OFFSET_GLOBAL]; } else { return $this->_queries[$result]; } } }