예제 #1
0
 public static function ReportServerRunquery_fetchMode($query, $whereParams = array())
 {
     if (!isset(self::$ReportDB)) {
         $_host = config::$db_servers['slave']['host'];
         $_user = config::$db_servers['slave']['report_user'];
         $_pass = config::$db_servers['slave']['report_pass'];
         $_default_db = sys_config::$db_server['database'];
         self::$ReportDB = self::getPdoObject($_host, $_user, $_pass, $_default_db, $ShowException);
     }
     $PDO_Obj = self::$ReportDB;
     /*@var $PDO_Obj PDO*/
     //-------------------
     $mainQuery = $query;
     $statement = $PDO_Obj->prepare(self::CorrectFarsiString($query));
     $keys = array_keys($whereParams);
     for ($i = 0; $i < count($keys); $i++) {
         $st = is_int($keys[$i]) ? $keys[$i] + 1 : $keys[$i];
         $whereParams[$keys[$i]] = self::CorrectFarsiString($whereParams[$keys[$i]]);
         $statement->bindParam($st, $whereParams[$keys[$i]]);
         if (is_int($keys[$i])) {
             $mainQuery = preg_replace("/\\?/", "'" . $whereParams[$keys[$i]] . "'", $mainQuery, 1);
         } else {
             $mainQuery = str_replace($keys[$i], "'" . $whereParams[$keys[$i]] . "'", $mainQuery);
         }
     }
     //.............................
     $statement->execute();
     self::$statements[$PDO_Obj->getAttribute(PDO::ATTR_CONNECTION_STATUS)] = $statement;
     self::$queryString = $mainQuery;
     //.............................
     if ($statement->errorCode() == "00000") {
         return $statement;
     }
     parent::PushException(array_merge($statement->errorInfo(), array("query" => $statement->queryString)));
     return false;
 }