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;
}
示例#2
0
文件: clHopi.php 项目: jeromecc/tuv2
 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";
示例#4
0
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;
}
示例#5
0
                 $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);
示例#6
0
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;
 }
示例#8
0
 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;
 }
示例#10
0
 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;
 }
示例#11
0
function F_OCIFetchStatement($Res)
{
    OCIFetchStatement($Res, $Arr);
    return $Arr;
}
示例#12
0
 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;
 }
示例#13
0
 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;
     }
 }