Пример #1
0
 private static function execSQL($sql, $params, $returnMode)
 {
     $mysqli = self::getInstance();
     if (!($stmt = $mysqli->prepare($sql))) {
         return false;
     }
     if ($params !== array()) {
         call_user_func_array(array($stmt, 'bind_param'), self::refValues($params));
     }
     $stmt->execute();
     switch ($returnMode) {
         case QUERY_RETURN_ROWS_AFFECTED:
             $result = $mysqli->affected_rows;
             break;
         case QUERY_RETURN_INSERT_ID:
             $result = $stmt->insert_id;
             break;
         case QUERY_RETURN_DATA_ARRAY:
             $meta = $stmt->result_metadata();
             while ($field = $meta->fetch_field()) {
                 $parameters[] =& $row[$field->name];
             }
             call_user_func_array(array($stmt, 'bind_result'), self::refValues($parameters));
             $results = array();
             while ($stmt->fetch()) {
                 $x = array();
                 foreach ($row as $key => $val) {
                     $x[$key] = $val;
                 }
                 $results[] = $x;
             }
             $result = $results;
             break;
         default:
             $result = array();
             break;
     }
     $error = $mysqli->error;
     if ($error != "") {
         self::$lasterror = $error;
     }
     $stmt->close();
     self::closeConnection();
     return $error != "" ? false : $result;
 }