function da_sql_num_rows($statement, $config) { // Unfortunately we need to fetch the statement as ocirowcount doesn't work on SELECTs $rows = OCIFetchStatement($statement, $res); if ($config[sql_debug] == 'true') { print "<b>DEBUG(SQL,OCI DRIVER): Query Result: Num rows:: " . $rows . "</b><br>\n"; } // Unfortunately we need to re-execute because the statement cursor is reset after OCIFetchStatement :-( OCIExecute($statement); return $rows; }
function GetInformations() { // $query = "select log_nom,log_prenom,log_fonction,log_fonctions, log_equipes,log_uf,log_uid from hopi.log where log_idsession = ".$this->hopisession ; $query = "select * from hopi.log where log_idsession = " . $this->hopisession; if (function_exists('OCILogon')) { $conn = @OCILogon("hopi", "hopi", "hopi"); $stmt = @OCIParse($conn, $query); @OCIExecute($stmt); $nrows = @OCIFetchStatement($stmt, $results); $ldap = new clAuthLdap(); if ($nrows > 0) { $_POST['login'] = $results["LOG_UID"][0]; $ldap->valide('noBind'); $_SESSION['hopisession'] = ''; return $ldap->getInformations(); } /* if ( $nrows > 0 ) { $log[uid] = $results["LOG_UID"][0] ; $log[nom] = $results["LOG_NOM"][0] ; $log[prenom] = $results["LOG_PRENOM"][0] ; $log[fonction] = $results["LOG_FONCTION"][0] ; $log[fonctions] = explode ( ',', $results["LOG_FONCTIONS"][0] ) ; $log[equipes] = explode ( ',', $results["LOG_EQUIPES"][0] ) ; $log[uf] = $results["LOG_UF"][0] ; $log[org] = $results["LOG_ORGANISATION"][0] ; } else { $log = "false" ; } $infos[type] = "Hopi" ; $infos[nom] = $log[nom] ; $infos[prenom] = $log[prenom] ; $infos[iduser] = $log[uid] ; $infos[pseudo] = "Hopi (".$log[uid].")" ; $infos[mail] = $log[uid]."@ch-hyeres.fr" ; $infos[uf] = explode ( ",", str_ireplace ( "'", '', $results["LOG_UF"][0] ) ) ; $infos[org] = $log[org] ; // Récupération de la liste des groupes. for ( $i = 0 ; isset ( $log[equipes][$i] ) ; $i++ ) $or_equipes .= " OR nomgroupe='".$log[equipes][$i]."'" ; for ( $i = 0 ; isset ( $log[fonctions][$i] ) ; $i++ ) $or_fonctions .= " OR nomgroupe='".$log[fonctions][$i]."'" ; $param[cw] = "where nomgroupe='HOPI' OR nomgroupe='".$log[uid]."' OR nomgroupe='".$log[fonction]."' $or_equipes $or_fonctions" ; $req = new clResultQuery ; $res = $req -> Execute ( "Fichier", "getGroupes", $param, "ResultQuery" ) ; $infos[idgroupe] = $res[idgroupe][0] ; for ( $j = 1 ; isset ( $res[idgroupe][$j] ) ; $j++ ) { $infos[idgroupe] .= ",".$res[idgroupe][$j] ; } //print "<br>Groupe(s) : ".$infos[idgroupe] ; */ @oci_close($conn); return $infos; } }
$mois = substr($date_jour, 4, 2); $annee = substr($date_jour, 0, 4); $date_file = date("YmdHis"); $date_envoi = date("d/m/Y à H:i:s"); $date_event = date("d/m/Y", mktime(0, 0, 0, $mois, $jour - 1, $annee)); $balise_element = "\n<entete>"; $balise_element .= "\n<idActeur>{$idActeur}</idActeur>"; $balise_element .= "\n<cleActeur>{$cleDepot}</cleActeur>"; $balise_element .= "\n<arRequis>{$arRequis}</arRequis>"; $balise_element .= "\n<mail>{$mail}</mail>"; $balise_element .= "\n</entete>"; //###################Recherche des patients décédés ######### $requete = "select to_char(pat.dtnai,'yyyy') annee_nais,count(*) nb_deces\n\tfrom passage pas,patient pat\n\twhere pat.idu=pas.idu \n\t\t and to_char(pas.dtsor,'dd/mm/yyyy')='{$date_event}'\n\t\t and pas.modsor='05'\n\tgroup by to_char(pat.dtnai,'yyyy')"; $stmt = OCIParse($conn, $requete); OCIExecute($stmt); $nrows = OCIFetchStatement($stmt, $results); for ($j = 0; $j < $nrows; $j++) { date("Y") - $results[ANNEE_NAIS][$j] >= 75 ? $NbDecesSup75Ans = $NbDecesSup75Ans + $results[NB_DECES][$j] : ""; $NbDeces = $NbDeces + $results[NB_DECES][$j]; } $NbDecesSup75Ans == "" ? $NbDecesSup75Ans = 0 : ""; $NbDeces == "" ? $NbDeces = 0 : ""; //Constition du format XML relatif au formulaire DECES $balise_element .= "\n<element>"; $balise_element .= "\n<nomForm>{$nomForm}</nomForm>"; $balise_element .= "\n<date_event>{$date_event}</date_event>"; $balise_element .= "\n<NbDeces>{$NbDeces}</NbDeces>"; $balise_element .= "\n<NbDecesSup75Ans>{$NbDecesSup75Ans}</NbDecesSup75Ans>"; $balise_element .= "\n</element>"; //Ecriture du fichier d'export $nom_fic = $idActeur . "_" . $date_file . ".xml";
function DBGetRecordCount($stmt, $commitMode = 0) { // Devuelve el número de filas buscadas.. $commit = OCI_COMMIT_ON_SUCCESS; switch ($commitMode) { case 0: $commit = OCI_DEFAULT; break; case 1: $commit = OCI_COMMIT_ON_SUCCESS; break; } $recordCount = OCIFetchStatement($stmt, $results); oci_execute($stmt, $commit); return $recordCount; }
$sit = $sit + 1; } } if ($dat != 'CDOCORRENCIA') { print "<td {$cl}>{$data[$i]}</td>"; } } print "</tr>"; } print "</table></div>"; $cl = '#FFFFFF'; $sql = "\n SELECT OA.CDOCORRENCIA||' - '|| DECODE(O.MSG_POS,NULL,o.txocorrencia,O.MSG_POS) MENSAGEM\n FROM\n AUTORIZACAO AU,\n servico_da_autorizacao SA ,\n OCORRENCIA_AUTORIZACAO OA,\n OCORRENCIA O\n WHERE\n AU.NRAUTORIZACAO = '{$v_nrautorizacao}'\n and\n ( (OA.NROCORRENCIA = au.nrocorrencia)\n or (OA.NROCORRENCIA = sa.nrocorrencia) )\n and OA.CDOCORRENCIA = O.CDOCORRENCIA\n and AU.NRAUTORIZACAO = SA.NRAUTORIZACAO\n GROUP BY OA.CDOCORRENCIA||' - '|| DECODE(O.MSG_POS,NULL,o.txocorrencia,O.MSG_POS)"; $stmt2 = ociparse($conn, $sql); OCIdefineByName($stmt2, "mensagem", $mensagem); OCIexecute($stmt2); $nrow = OCIFetchStatement($stmt2, $output); $cl = "class='fundo_mesclado'"; if ($nrow > 0) { print "<br><div align=\"center\"><table border=\"0\"><tr><td class='titulo'><p align=\"center\">Ocorrência da Autorização</font></p></td></tr>"; for ($i = 0; $i < $nrow; $i++) { reset($output); print "<tr>"; while ($column = each($output)) { $data = $column['value']; print "<td {$cl}><p align=\"center\">{$data[$i]}</font></p></td>"; } print "</tr>"; } print "</table></div>"; } OCIFreeStatement($stmt2);
function db_num_rows($res) { global $db_type; global $debug; if ($db_type == "mysql") { if (!$res) { return 0; } return mysql_num_rows($res); } else { if ($db_type == "oracle") { $num = OCIFetchStatement($res); OCIExecute($res); // since ocifetchstatement advances the results one row // we need to reset that by executing the query again return $num; } } }
function query($Query_String) { $this->connect(); $this->free(); $this->Parse = OCIParse($this->Link_ID, $Query_String); if (!$this->Parse) { $this->Error = OCIError($this->Parse); } else { if ($this->autoCommit) { OCIExecute($this->Parse, OCI_COMMIT_ON_SUCCESS); } else { OCIExecute($this->Parse, OCI_DEFAULT); } if ($this->autoCount) { /* need to repeat the query to count the returned rows from a "select" statement. */ if (preg_match("/^SELECT/i", $Query_String)) { /* On $this->num_rows I'm storing the returned rows of the query. */ $this->num_rows = OCIFetchStatement($this->Parse, $aux); OCIExecute($this->Parse, OCI_DEFAULT); } } $this->Error = OCIError($this->Parse); } $this->Row = 0; if ($this->Debug) { printf("Debug: query = %s<br>\n", $Query_String); } if (1403 != $this->Error["code"] and 0 != $this->Error["code"] and $this->sqoe) { echo "<BR><FONT color=red><B>" . $this->Error["message"] . "<BR>Query :\"{$Query_String}\"</B></FONT>"; } $this->last_query_text = $Query_String; return $this->Parse; }
function query($query) { $return_value = 0; // Flush cached values.. $this->flush(); // Log how the function was called $this->func_call = "\$db->query(\"{$query}\")"; // Keep track of the last query for debug.. $this->last_query = $query; $this->count(true, true); // Use core file cache function if ($cache = $this->get_cache($query)) { return $cache; } // If there is no existing database connection then try to connect if (!isset($this->dbh) || !$this->dbh) { $this->connect($this->dbuser, $this->dbpassword, $this->dbname); } // Parses the query and returns a statement.. if (!($stmt = OCIParse($this->dbh, $query))) { $error = OCIError($this->dbh); $this->register_error($error["message"]); $this->show_errors ? trigger_error($error["message"], E_USER_WARNING) : null; return false; } elseif (!($this->result = OCIExecute($stmt))) { $error = OCIError($stmt); $this->register_error($error["message"]); $this->show_errors ? trigger_error($error["message"], E_USER_WARNING) : null; return false; } // If query was an insert $is_insert = false; if (preg_match('/^(insert|delete|update|create) /i', $query)) { $is_insert = true; // num afected rows $return_value = $this->rows_affected = @OCIRowCount($stmt); } else { // Get column information if ($num_cols = @OCINumCols($stmt)) { // Fetch the column meta data for ($i = 1; $i <= $num_cols; $i++) { $this->col_info[$i - 1]->name = @OCIColumnName($stmt, $i); $this->col_info[$i - 1]->type = @OCIColumnType($stmt, $i); $this->col_info[$i - 1]->size = @OCIColumnSize($stmt, $i); } } // If there are any results then get them if ($this->num_rows = @OCIFetchStatement($stmt, $results)) { // Convert results into object orientated results.. // Due to Oracle strange return structure - loop through columns foreach ($results as $col_title => $col_contents) { $row_num = 0; // then - loop through rows foreach ($col_contents as $col_content) { $this->last_result[$row_num]->{$col_title} = $col_content; $row_num++; } } } // num result rows $return_value = $this->num_rows; } // disk caching of queries $this->store_cache($query, $is_insert); // If debug ALL queries $this->trace || $this->debug_all ? $this->debug() : null; return $return_value; }
function query($query) { // For reg expressions $query = trim($query); $return_value = 0; // Flush cached values.. $this->flush(); // Log how the function was called $this->func_call = "\$db->query(\"{$query}\")"; // Keep track of the last query for debug.. $this->last_query = $query; // Parses the query and returns a statement.. if (!($stmt = OCIParse($this->dbh, $query))) { $this->print_error("Last Query", $query); } elseif (!($this->result = OCIExecute($stmt))) { $this->print_error("Last Query", $query); } $this->num_queries++; // If query was an insert if (preg_match('/^(insert|delete|update|create)\\s+/i', $query)) { // num afected rows $return_value = $this->rows_affected = OCIRowCount($stmt); } else { // Get column information if ($num_cols = @OCINumCols($stmt)) { // Fetch the column meta data for ($i = 1; $i <= $num_cols; $i++) { $this->col_info[$i - 1]->name = OCIColumnName($stmt, $i); $this->col_info[$i - 1]->type = OCIColumnType($stmt, $i); $this->col_info[$i - 1]->size = OCIColumnSize($stmt, $i); } } // If there are any results then get them if ($this->num_rows = @OCIFetchStatement($stmt, $results)) { // Convert results into object orientated results.. // Due to Oracle strange return structure - loop through columns foreach ($results as $col_title => $col_contents) { $row_num = 0; // then - loop through rows foreach ($col_contents as $col_content) { $this->last_result[$row_num]->{$col_title} = $col_content; $row_num++; } } } // num result rows $return_value = $this->num_rows; } // If debug ALL queries $this->trace || $this->debug_all ? $this->debug() : null; return $return_value; }
function execute_request($value_query, $value_config, $Param) { global $debug; //Constitution de la requete finale $requete = $value_query['code_sql']; if (!is_array($Param)) { eko("pb d'argument pour requete {$requete}"); } while (list($key, $val) = each($Param)) { $searched_str = "\$" . $key; $requete = str_replace($searched_str, $val, $requete); } // echo $requete; // On place les colonnes à ramener dans un tableau $tab_cols if ($value_query['colonnes'] != '*' & $value_query['colonnes'] != '') { $tab_cols = split(",", $value_query['colonnes']); } switch ($value_config['type']) { case "MySQL": // Connexion au serveur Mysql & Execution de la requete // eko ( $value_config ) ; $conn = @mysql_connect($value_config['host'], $value_config['login'], $value_config['password']); if (!$conn) { global $errs; if ($errs) { $errs->addErreur("La connexion au serveur MySQL \"" . $value_config['host'] . "\" avec l'utilisateur \"" . $value_config['login'] . "\" et le mot de passe \"*******\" a échoué."); } } // eko ( "connexion : ".$value_config[login]."/".$value_config[password]."@". $value_config[host] ) ; $INDIC_SVC[0] = mysql_errno(); $INDIC_SVC[1] = mysql_error(); // pas de problème de connexion if (!$INDIC_SVC[0]) { // execution de la raquete if (!$this->forceBase) { $result = @mysql_select_db($value_config['db']); } else { $result = @mysql_select_db($this->forceBase); } $result = @mysql_query($requete); //echo "<h1>REQUETE : $requete</h1>"; $INDIC_SVC[0] = mysql_errno(); $INDIC_SVC[1] = mysql_error(); // pas de problème à l'execution de la requete if (!$INDIC_SVC[0]) { // Analyse du type de requete if (DEBUGSQL and function_exists('eko')) { eko($requete); } $qry_type = explode(" ", $requete); switch (strtoupper($qry_type[0])) { case "SELECT": $nrows = mysql_num_rows($result); if ($nrows) { // le nom des colonnes a ramener est * if (!isset($tab_cols)) { for ($i = 0; $i < mysql_num_fields($result); $i++) { $tab_cols[] = mysql_field_name($result, $i); } } // Maintenant On connait $tab_cols while ($record = mysql_fetch_array($result)) { // affectation dans les tableau de colonnes //jeton de debugage quand même colones unset($jeton); while (list($key, $val) = each($tab_cols)) { if (!isset($jeton[$val])) { $jeton[$val] = true; } else { $jeton[$val] = false; } if (isset(${$val})) { if ($jeton[$val]) { ${$val} .= $record[$val] . "§"; //if ($debug) eko($val."-".$$val); } } else { ${$val} = $record[$val] . "§"; } } reset($tab_cols); } //Construction des tableaux de colonnes unset($jeton); //print "********************* Tableau **********************<br>".affTab ( $tab_cols ) ; while (list($key, $val) = each($tab_cols)) { //print "/////////////////// Case ////////////////////<br>".affTab ( $jeton[$val] ) ; if (!isset($jeton[$val])) { $jeton[$val] = true; } else { $jeton[$val] = false; } if ($jeton[$val]) { // on retire le dernier | //print "<br>dollardollarval : ".$$val ; ${$val} = substr(${$val}, 0, strlen(${$val}) - 1); $resultats[$val] = explode("§", ${$val}); } //if ($debug) eko($resultats[$val]); } } $INDIC_SVC[2] = $nrows; break; case "INSERT": $INDIC_SVC[2] = mysql_affected_rows(); $INDIC_SVC[3] = mysql_insert_id(); break; case "UPDATE": case "DELETE": $INDIC_SVC[2] = mysql_affected_rows(); break; } } } //mysql_close ( $conn ) ; break; case "MSSQL": // Connexion au serveur Mssql & Execution de la requete //print affTab ( $value_config ) ; //mssql_connect('galileo.ch-brignoles.fr','user_dim' ,'') || die ( 'hop' ) ; //mssql_connect("galileo","user_dim","") ||die ("Connexion impossible au serveur!"); $conn = mssql_pconnect($value_config['host'], $value_config['login'], $value_config['password']); if (!$conn) { global $errs; if ($errs) { $errs->addErreur("La connexion au serveur MsSQL \"" . $value_config['host'] . "\" avec l'utilisateur \"" . $value_config['login'] . "\" et le mot de passe \"*******\" a échoué."); } } // eko ( "connexion : ".$value_config[login]."/".$value_config[password]."@". $value_config[host] ) ; //$INDIC_SVC[0] = mssql_get_last_message ( ) ; //$INDIC_SVC[1] = mssql_get_last_message ( ) ; // pas de problème de connexion if (!$INDIC_SVC[0]) { // execution de la raquete $result = mssql_select_db($value_config['db']); $result = mssql_query($requete); //echo "<h1>REQUETE : $requete</h1>"; //$INDIC_SVC[0] = mssql_get_last_message ( ) ; //$INDIC_SVC[1] = mssql_get_last_message ( ) ; // pas de problème à l'execution de la requete if (!$INDIC_SVC[0]) { // Analyse du type de requete if (DEBUGSQL and function_exists('eko')) { eko($requete); } $qry_type = explode(" ", $requete); switch (strtoupper($qry_type[0])) { case "SELECT": $nrows = mssql_num_rows($result); //eko ( "nombre de lignes : $nrows" ) ; if ($nrows) { // le nom des colonnes a ramener est * if (!isset($tab_cols)) { for ($i = 0; $i < mssql_num_fields($result); $i++) { $tab_cols[] = mssql_field_name($result, $i); } } // Maintenant On connait $tab_cols while ($record = mssql_fetch_array($result)) { // affectation dans les tableau de colonnes //jeton de debugage quand même colones unset($jeton); while (list($key, $val) = each($tab_cols)) { if (!isset($jeton[$val])) { $jeton[$val] = true; } else { $jeton[$val] = false; } if (isset(${$val})) { if ($jeton[$val]) { ${$val} .= $record[$val] . "§"; // eko ( $record[$val] ) ; //if ($debug) eko($val."-".$$val); } } else { ${$val} = $record[$val] . "§"; } } reset($tab_cols); } // Construction des tableaux de colonnes unset($jeton); while (list($key, $val) = each($tab_cols)) { if (!isset($jeton[$val])) { $jeton[$val] = true; } else { $jeton[$val] = false; } if ($jeton[$val]) { // on retire le dernier | //print "<br>dollardollarval : ".$$val ; ${$val} = substr(${$val}, 0, strlen(${$val}) - 1); $resultats[$val] = explode("§", ${$val}); } //if ($debug) eko($resultats[$val]); } } $INDIC_SVC[2] = $nrows; break; case "INSERT": //$INDIC_SVC[2] = mssql_affected_rows ( ) ; //$INDIC_SVC[3] = mssql_insert_id ( ) ; break; case "UPDATE": case "DELETE": //$INDIC_SVC[2] = mssql_affected_rows ( ) ; break; } } } mssql_close($conn); break; case "ORACLE": //echo "oracle"; // Connexion // eko ($value_config); // $conn = @OCILogon ( $value_config['login'], $value_config['password'], $value_config['db'] ) ; $conn = @oci_pconnect($value_config['login'], $value_config['password'], $value_config['db']); //global $conn ; $conn_error = ocierror(); // Problème à la connexion if ($conn_error) { $INDIC_SVC[0] = $conn_error['code']; $INDIC_SVC[1] = $conn_error['message']; // pas de problème de connexion } else { // print $requete; // execution de la raquete $stmt = OCIParse($conn, $requete); // print ( $requete ) ; if (DEBUGSQL and function_exists('eko')) { eko($requete); } OCIExecute($stmt); $INDIC_SVC[0] = $conn_error['code']; $INDIC_SVC[1] = $conn_error['message']; // pas de problème à l'execution de la requete if (!$INDIC_SVC[0]) { // Analyse du type de requete $qry_type = OCIStatementType($stmt); switch ($qry_type) { case "SELECT": $nrows = OCIFetchStatement($stmt, $results); // eko ( "<P>There are $nrows records containing your criteria. ($requete)</P>" ) ; if ($nrows) { // le nom des colonnes a ramener n'a pas été spécifié ou est * if (!isset($tab_cols)) { $ncols = OCINumCols($stmt); for ($k = 1; $k <= $ncols; $k++) { $tab_cols[] = OCIColumnName($stmt, $k); } } for ($j = 0; $j < $nrows; $j++) { if (isset($tab_cols) and is_array($tab_cols)) { while (list($key, $val) = each($tab_cols)) { if (isset(${$val})) { ${$val} .= $results[$val][$j] . "§"; } else { ${$val} = $results[$val][$j] . "§"; } } } reset($tab_cols); } } //Construction des tableaux de colonnes if (isset($tab_cols) and is_array($tab_cols)) { while (list($key, $val) = each($tab_cols)) { // on retire le dernier | ${$val} = substr(${$val}, 0, strlen(${$val}) - 1); $resultats[$val] = explode("§", ${$val}); } } $INDIC_SVC[2] = $nrows; break; case "INSERT": $nrows = OCIRowCount($stmt); $INDIC_SVC[2] = $nrows; break; case "UPDATE": case "DELETE": $nrows = OCIRowCount($stmt); $INDIC_SVC[2] = $nrows; break; } } } oci_close($conn); break; case "LDAP": // Connexion au serveur LDAP $ds = @ldap_connect($value_config['host']); $bind = @ldap_bind($ds); if ($ds) { // On eclate les instructions LDAP dans un tableau $instructions_ldap = explode("##", $requete); $chemin = $instructions_ldap[0]; $filtre = $instructions_ldap[1]; // Fin de gestion du code sql // Execution de la requete $sr = ldap_search($ds, $chemin, $filtre); // le nom des colonnes a ramener n'a pas été spécifié ou est * if (!isset($tab_cols)) { $entry = ldap_first_entry($ds, $sr); $attrs = ldap_get_attributes($ds, $entry); for ($l = 0; $l < sizeof($attrs); $l++) { $tab_cols[] = $attrs[$l]; } } $result = ldap_get_entries($ds, $sr); for ($i = 0; $i < $result["count"]; $i++) { // test des attributs multivalués while (list($key, $val) = each($tab_cols)) { for ($v = 0; $v < sizeof($result[$i][$val]); $v++) { if ($result[$i][$val][$v] != "") { if ($v == 0) { $separateur = ""; } else { $separateur = "##"; } $valeur_brut = explode(",", $result[$i][$val][$v]); if ($valeur_brut[1]) { $valeur_pure = explode("cn=", $valeur_brut[0]); } else { $valeur_pure[1] = $result[$i][$val][$v]; } ${$val} .= $separateur . $valeur_pure[1]; } } ${$val} .= ","; } reset($tab_cols); } // Construction des tableaux de colonnes while (list($key, $val) = each($tab_cols)) { // on retire la dernière virgule ${$val} = substr(${$val}, 0, strlen(${$val}) - 1); $resultats[$val] = explode(",", ${$val}); } } $INDIC_SVC[0] = ldap_errno($ds); $INDIC_SVC[1] = ldap_error($ds); $INDIC_SVC[2] = $result["count"]; break; } $INDIC_SVC[15] = $requete; if (isset($Param['RIFIFI'])) { echo "indicsvc[0]:{$INDIC_SVC['0']}<br>indicsvc[1]:{$INDIC_SVC['1']}<br>indicsvc[2]:{$INDIC_SVC['2']}<br>indicsvc[3]:{$INDIC_SVC['3']}<br>indicsvc[15]:{$INDIC_SVC['15']}<br>\n"; } $resultats['INDIC_SVC'] = $INDIC_SVC; return $resultats; }
function F_OCIFetchStatement($Res) { OCIFetchStatement($Res, $Arr); return $Arr; }
function query($query) { //去掉查询语句的前后空格 $query = trim($query); $return_value = 0; //清空缓存.. $this->flush(); //记录此函数如何被调用,用于调试... $this->func_call = "\$db->query(\"{$query}\")"; //跟踪最后查询语句,用于调试.. $this->last_query = $query; //解析查询语句 if (!($stmt = OCIParse($this->dbh, $query))) { $this->print_error(); } elseif (!($this->result = OCIExecute($stmt))) { $this->print_error(); } $this->num_queries++; //执行insert, delete, update, replace操作 if (preg_match('/^(insert|delete|update|create)\\s+/i', $query)) { //获取操作所影响的记录行数 $return_value = $this->rows_affected = OCIRowCount($stmt); } else { //获取字段信息 if ($num_cols = @OCINumCols($stmt)) { for ($i = 1; $i <= $num_cols; $i++) { $this->col_info[$i - 1]->name = OCIColumnName($stmt, $i); $this->col_info[$i - 1]->type = OCIColumnType($stmt, $i); $this->col_info[$i - 1]->size = OCIColumnSize($stmt, $i); } } //获取查询结果 if ($this->num_rows = @OCIFetchStatement($stmt, $results)) { //将结果集转变成对象,因为oracle的返回结果比较奇怪:) foreach ($results as $col_title => $col_contents) { $row_num = 0; //循环所有的行 foreach ($col_contents as $col_content) { $this->last_result[$row_num]->{$col_title} = $col_content; $row_num++; } } } //获取查询结果行数 $return_value = $this->num_rows; } //是否显示所有的查询信息 $this->debug_all ? $this->debug() : null; return $return_value; }
function sql_fetchrowset($query_id = 0) { if (!$query_id) { $query_id = $this->query_result; } if ($query_id) { $rows = @OCIFetchStatement($query_id, $results); @OCIExecute($query_id, OCI_DEFAULT); for ($i = 0; $i < $rows; $i++) { @OCIFetchInto($query_id, $tmp_result, OCI_ASSOC + OCI_RETURN_NULLS); for ($j = 0; $j < count($tmp_result); $j++) { list($key, $val) = each($tmp_result); $return_arr[strtolower($key)] = $val; } $result[] = $return_arr; } return $result; } else { return false; } }