Esempio n. 1
0
 /**
  * Cast data into int, float or string.
  *
  * INFO: install / use "mysqlnd"-driver for better performance
  *
  * @param array|object $data
  *
  * @return array|false false on error
  */
 private function cast(&$data)
 {
     if (Helper::isMysqlndIsUsed() === true) {
         return $data;
     }
     // init
     static $fields = array();
     static $types = array();
     $result_hash = spl_object_hash($this->_result);
     if (!isset($fields[$result_hash])) {
         $fields[$result_hash] = \mysqli_fetch_fields($this->_result);
     }
     if ($fields[$result_hash] === false) {
         return false;
     }
     if (!isset($types[$result_hash])) {
         foreach ($fields[$result_hash] as $field) {
             switch ($field->type) {
                 case 3:
                     $types[$result_hash][$field->name] = 'int';
                     break;
                 case 4:
                     $types[$result_hash][$field->name] = 'float';
                     break;
                 default:
                     $types[$result_hash][$field->name] = 'string';
                     break;
             }
         }
     }
     if (is_array($data) === true) {
         foreach ($types[$result_hash] as $type_name => $type) {
             if (isset($data[$type_name])) {
                 settype($data[$type_name], $type);
             }
         }
     } elseif (is_object($data)) {
         foreach ($types[$result_hash] as $type_name => $type) {
             if (isset($data->{$type_name})) {
                 settype($data->{$type_name}, $type);
             }
         }
     }
     return $data;
 }
Esempio n. 2
0
 /**
  * Open a new connection to the MySQL server.
  *
  * @return boolean
  */
 public function connect()
 {
     if ($this->isReady()) {
         return true;
     }
     \mysqli_report(MYSQLI_REPORT_STRICT);
     try {
         $this->link = \mysqli_init();
         if (Helper::isMysqlndIsUsed() === true) {
             \mysqli_options($this->link, MYSQLI_OPT_INT_AND_FLOAT_NATIVE, true);
         }
         /** @noinspection PhpUsageOfSilenceOperatorInspection */
         $this->connected = @\mysqli_real_connect($this->link, $this->hostname, $this->username, $this->password, $this->database, $this->port, $this->socket);
     } catch (\Exception $e) {
         $this->_debug->displayError('Error connecting to mysql server: ' . $e->getMessage(), true);
     }
     \mysqli_report(MYSQLI_REPORT_OFF);
     if (!$this->connected) {
         $this->_debug->displayError('Error connecting to mysql server: ' . \mysqli_connect_error(), true);
     } else {
         $this->set_charset($this->charset);
     }
     return $this->isReady();
 }