public function __construct()
 {
     parent::__construct();
     try {
         $this->con = new PDO('odbc:Driver={SQL Server};Server=dgk90tch006;Database=DevNet; Uid=sa;Pwd=Asu31281080', '', '', [PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]);
     } catch (Exception $ex) {
         $msg = $ex->getMessage();
         charsetChange($msg);
         throw new Exception($msg);
     }
 }
 /**
  * @param $stmt PDOStatement
  * @return array
  */
 private function prepareData(&$stmt)
 {
     $error = $stmt->errorInfo();
     $ecode = get_param($error, 0);
     if ($ecode !== '00000') {
         $emsg = get_param($error, 2);
         charsetChange($emsg);
         $this->qerrors[] = "ACCESS error [{$ecode}]: " . ($emsg ? $emsg : 'Invalid params');
         return false;
     }
     $data = $stmt->fetchAll();
     array_walk_recursive($data, 'charsetChange');
     return $data;
 }
Example #3
0
 protected function select($query, $param = array(), &$rowCount = null)
 {
     if (!self::isConnected()) {
         self::$errorlist[] = 'Связь с БД не установлена.';
         return [];
     }
     /**
      * модернизируем запрос на лету
      * если есть параметры в виде массивов
      * такие параметры будем заменять на конструкцию in
      *
      * where field in :[ARRAY] => where field in (x1,x2,...)
      */
     $cnt = 0;
     foreach ($param as $key => $value) {
         if (gettype($value) === 'array') {
             $condition = "(";
             $local = 0;
             foreach ($value as $item) {
                 $condition .= $local ? "," : "";
                 // если не первый параметр, то добавим запятую
                 $vparam = "_X" . ++$cnt;
                 $condition .= " :{$vparam}";
                 // а параметр подмассива перекидываем в основной массив
                 // елементы вложенного массива не должны быть сами массивами, иначе хрень будет
                 $param[$vparam] = $item;
                 $local++;
             }
             $condition .= ") ";
             $query = str_replace(":{$key}", $condition, $query);
             unset($param[$key]);
         }
     }
     //var_dump($query);
     $sth = self::$db->prepare($query);
     foreach ($param as $key => $value) {
         $type = strtolower(gettype($value));
         $cast = null;
         switch ($type) {
             case 'integer':
                 $cast = PDO::PARAM_INT;
                 break;
             case 'null':
                 $cast = PDO::PARAM_NULL;
                 break;
             case 'boolean':
                 $cast = PDO::PARAM_BOOL;
                 break;
             default:
                 $cast = PDO::PARAM_STR;
                 break;
         }
         $sth->bindValue($key, $value, $cast);
     }
     $sth->execute();
     $error = $sth->errorInfo();
     $ecode = get_param($error, 0);
     if ($ecode !== '00000') {
         $emsg = get_param($error, 2);
         charsetChange($emsg);
         self::$errorlist[] = "MySQL error [{$ecode}]: " . ($emsg ? $emsg : 'Invalid params');
     }
     $rowCount = $sth->rowCount();
     return $sth->fetchAll();
 }