public function bindValues(array $values)
    {
        $isAssociativeArray = count(array_filter(array_keys($values), 'is_string')) > 0;

        foreach ($values as $parameterName => $value) {
            if (!is_array($value)) {
                $value = [$value, PDO::PARAM_STR];
            }

            // If this is an indexed array, we need to offset the parameter name by 1 because it's 1-indexed
            if (!$isAssociativeArray) {
                ++$parameterName;
            }

            if (count($value) !== 2 || !$this->bindValue($parameterName, $value[0], $value[1])) {
                return false;
            }
        }

        return true;
    }