Example #1
0
 /**
  * Esegue una procedura ed inserisce eventuali parametri di ritorno in $return_params
  * @param type $query
  * @param type $bind_params
  * @param type $return_params
  * @return boolean
  */
 public function callProcedure($query, $bind_params = null, &$return_params = null)
 {
     $pdo = $this->getDbInstance();
     $string = $query;
     $params = array();
     if ($query instanceof Query) {
         $string = $query->toString();
         $params = $query->getBindParams();
         $stmt = $pdo->prepare($string);
     } else {
         if ($query instanceof \PDOStatement) {
             $stmt = $query;
         } else {
             $stmt = $pdo->prepare($query);
         }
     }
     if (!is_null($bind_params)) {
         $params = $bind_params;
     }
     try {
         $stmt->execute($params);
         if (is_null($return_params)) {
             return true;
             // procedure eseguita
         }
         // altrimenti se non è null vuol dire che è stato passato e quindi devo ricavarmi i valori
         // in mysql non è possibile usare la costante \PDO::PARAM_INPUT_OUTPUT in quanto genera errore
         // quindi faccio una select sulle variabili indicate in fase di chiamata
         $selectclassname = \smn\pheeca\kernel\Database::getClauseClassNameFromDriverName('select', 'mysql');
         $select_class = new $selectclassname($return_params);
         $stmt = $pdo->prepare($select_class->toString());
         $stmt->execute($return_params);
         $return_params = $stmt->fetchAll(\PDO::FETCH_ASSOC);
         return $return_params;
     } catch (\PDOException $ex) {
         echo 'Adapter in exception : ' . $ex->getMessage();
         return false;
     }
 }