MODO_OBTENCION_NUM
MODO_OBTENCION_NUM
Uno de los valores posibles para <var>$modo</var> en {@link cambiarModoObtencion() cambiarModoObtencion()}.
Las columnas se obtienen con índices numéricos.
Clase que implementa la capa de conexión con la base de datos.
$seguridad : \iSeguridad
$auditor : \Auditor
cambiarModoObtencion(integer $modo) : integer
Cambia el modo en que se obtienen los resultados para esta conexión.
No tiene efecto si $modo no tiene un valor válido.
integer | $modo | una de las constantes MODOOBTENCION* |
el modo de obtención actual o false si no se hizo el cambio
obtenerPrimeraFila(string $consulta, boolean $excepcion = FALSE) : array
Devuelve la primera fila retornada por <var>$consulta</var>.
string | $consulta | |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
si se produce un error y $excepcion es TRUE
un arreglo con una entrada por columna; un arreglo vacío si la consulta no retornó filas
obtenerPrimero(string $consulta, boolean $excepcion = FALSE) : mixed
Devuelve el valor de la primera columna de la primera fila retornada por <var>$consulta</var>.
string | $consulta | |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
si se produce un error y $excepcion es TRUE
el valor de la columna; null si la consulta no retornó filas
obtenerTodos(string $consulta, boolean $excepcion = FALSE, integer $numrows = -1, integer $offset = -1) : array
Ejecuta la consulta <var>$consulta</var> y devuelve un array, con índices numéricos, que contiene todas las filas del resultado.
string | $consulta | |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
integer | $numrows | cantidad máxima de filas a retornar |
integer | $offset | desplazamiento hasta la primera fila |
si se produce un error y $excepcion es TRUE
literalSql(mixed $valor) : string
Prepara un valor para incluir como literal en una consulta SQL, de acuerdo a su tipo PHP.
Se asume que $valor ya fue correctamente escapado con \qstr() en caso de ser un string.
Por el momento sólo reconoce valores numéricos y strings. Cualquier valor que no sea numérico se interpreta como string.
Ejemplos:
$conexion->literalSql(42) === "42";
$conexion->literalSql('abc') === "'abc'";
$conexion->literalSql("'abc'") === "'abc'";
mixed | $valor |
si $valor no es un escalar o null
obtenerListaIndexadaPorClave(string $from, string $col_clave, string|array $cols_valores, array $clausulas_extra = array(), mixed $excluir = NULL, boolean $excluir_col_clave_de_valores = TRUE, boolean $excepcion = FALSE) : array
Obtiene una lista de datos desde la BD y la retorna como un array indexado por los valores de una columna clave.
Asume que los parámetros ya están saneados para evitar inyección de SQL.
Ejemplos. Dada la siguiente tabla tipoferiado:
ntipoferiado | ctipoferiado | dtipoferiado | bhabilitado --------------+--------------+--------------------+------------- 1 | FN | FERIADO NACIONAL | t 2 | FP | FERIADO PROVINCIAL | t 3 | FM | FERIADO MUNICIPAL | t 4 | P | PARO | t 5 | H | HUELGA | t 6 | O | OTRO | f 7 | A | ASUETO | t
$conexion->obtenerListaIndexadaPorClave('tipoferiado', 'ctipoferiado', 'dtipoferiado',
array('WHERE' => 'bhabilitado IS TRUE'), null, false, false) ==
array(
'FN' => 'FERIADO NACIONAL',
'FP' => 'FERIADO PROVINCIAL',
'FM' => 'FERIADO MUNICIPAL',
'P' => 'PARO',
'H' => 'HUELGA',
'A' => 'ASUETO'
);
$conexion->obtenerListaIndexadaPorClave('tipoferiado', 'ctipoferiado', 'dtipoferiado',
array('WHERE' => 'bhabilitado IS TRUE'), null, false, true) ==
array(
'FN' => array('ctipoferiado' => 'FN', 'dtipoferiado' => 'FERIADO NACIONAL'),
'FP' => array('ctipoferiado' => 'FP', 'dtipoferiado' => 'FERIADO PROVINCIAL'),
'FM' => array('ctipoferiado' => 'FM', 'dtipoferiado' => 'FERIADO MUNICIPAL'),
'P' => array('ctipoferiado' => 'P', 'dtipoferiado' => 'PARO'),
'H' => array('ctipoferiado' => 'H', 'dtipoferiado' => 'HUELGA'),
'A' => array('ctipoferiado' => 'A', 'dtipoferiado' => 'ASUETO')
);
$conexion->obtenerListaIndexadaPorClave('tipoferiado', 'ntipoferiado',
array('dtipoferiado', 'bhabilitado'), array(), 6, false, false) ==
array(
1 => array('ctipoferiado' => 'FN', 'bhabilitado' => 't'),
2 => array('ctipoferiado' => 'FP', 'bhabilitado' => 't'),
3 => array('ctipoferiado' => 'FM', 'bhabilitado' => 't'),
4 => array('ctipoferiado' => 'P', 'bhabilitado' => 't'),
5 => array('ctipoferiado' => 'H', 'bhabilitado' => 't'),
7 => array('ctipoferiado' => 'A', 'bhabilitado' => 't')
);
string | $from | contenido de la cláusula SQL FROM |
string | $col_clave | nombre de la columa clave, cuyos valores se van a usar para indexar el resultado; puede ser la clave primaria o una clave alternativa, pero debe ser una única columna |
string|array | $cols_valores | columna (string) o columnas (array) que contiene(n) los valores a retornar por cada fila; si es vacío retorna los valores de todas las columnas |
array | $clausulas_extra | otras cláusulas SQL a incluir en la consulta; las claves de este array pueden ser: 'WHERE', 'GROUP BY', 'HAVING', 'ORDER BY', 'LIMIT', 'OFFSET' |
mixed | $excluir | valor o valores de la columna $col_clave a excluir del resultado; se puede pasar como un escalar o como un array |
boolean | $excluir_col_clave_de_valores | ¿la columna clave se debe excluir de las columnas de valores? Si es false, el valor de la columna clave se incluye en el array de valores de cada fila del resultado |
boolean | $excepcion | tiene el mismo significado que el parámetro $excepcion de {@link Conexion::ejecutarConsulta()} |
resultado[i] == {fila i; columna $col_clave} => array({fila i; columnas $cols_valores})
ejecutarConsulta(string $consulta, boolean $excepcion = FALSE) : \ADORecordSet
Ejecuta la consulta y retorna el RecordSet asociado.
string | $consulta | |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
si se produce un error y $excepcion es TRUE
ejecutarConsultaLimitOffsetSinMsg(string $consulta, integer $numrows = -1, integer $offset = -1, array $inputarr = null) : \ADORecordSet
Ejecuta la consulta y retorna el RecordSet asociado, limitando la cantidad de registros, sin retornar ningun error.
string | $consulta | |
integer | $numrows | |
integer | $offset | |
array | $inputarr |
null o false si hay un error
ejecutarConsultaLimitOffset(string $consulta, integer $numrows = -1, integer $offset = -1, array $inputarr = NULL, boolean $excepcion = FALSE) : \ADORecordSet
Ejecuta la consulta y retorna el RecordSet asociado, limitando la cantidad de registros.
string | $consulta | |
integer | $numrows | |
integer | $offset | |
array | $inputarr | |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
si se produce un error y $excepcion es TRUE
ejecutarConsultaSeguraLimitOffsetSinMsg(string $consulta, integer $numrows = -1, integer $offset = -1, array $inputarr = null) : \ADORecordSet
Ejecuta la consulta y retorna el RecordSet asociado en un contexto de seguridad determinado, sin retornar ningun error.
string | $consulta | |
integer | $numrows | |
integer | $offset | |
array | $inputarr |
null o false si hay un error
ejecutarConsultaSeguraLimitOffset(string $consulta, integer $numrows = -1, integer $offset = -1, array $inputarr = NULL, boolean $excepcion = FALSE) : \ADORecordSet
Ejecuta la consulta y retorna el RecordSet asociado en un contexto de seguridad determinado.
string | $consulta | |
integer | $numrows | |
integer | $offset | |
array | $inputarr | |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
si se produce un error y $excepcion es TRUE
ejecutarConsultaSegura(string $consulta, boolean $excepcion = FALSE) : \ADORecordSet
Ejecuta la consulta y retorna el RecordSet asociado en un contexto de seguridad determinado.
string | $consulta | |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
si se produce un error y $excepcion es TRUE
ejecutarConsultaActualizacion(string $consulta, string $operacion = '', boolean $log = TRUE, boolean $excepcion = FALSE)
Ejecuta una consulta, sin retornar un RecordSet.
Se utiliza cuando la consulta corresponde a una actualización.
string | $consulta | el código sql a ejecutar |
string | $operacion | nombre de la operación a realizar: 'I', 'U' o 'D'; sólo se utiliza en el registro de log |
boolean | $log | ¿se debe guardar un registro de la operación en el log? |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
si se produce un error y $excepcion es TRUE
AutoExecute(string $table, mixed $fields_values, string $mode = 'INSERT', string|false $where = FALSE, boolean $forceUpdate = true, boolean $magicq = false, boolean $registro_log = true, boolean $excepcion = false) : boolean
Este metodo inserta o actualiza tablas tomando los datos de un arreglo, donde las claves son los nombres de los campos y el valor del arreglo el valor a almacenar.
string | $table | |
mixed | $fields_values | |
string | $mode | modo de operación; uno de: { 'INSERT' | '1' | 'UPDATE' | '2' }; '1' es equivalente a 'INSERT' y '2' a 'UPDATE' |
string|false | $where | |
boolean | $forceUpdate | |
boolean | $magicq | |
boolean | $registro_log | |
boolean | $excepcion | indica el comportamiento cuando hay un error: true para emitir una excepción ExcepcionXGAP o false para generar un error de la aplicación |
metaDatos(string $table, boolean $excepcion = false) : array
Retorna los metadatos asociados a una tabla.
De momento no es posible retornar metadatos completos sobre vistas: si $tabla corresponde a una vista, retorna metadatos sólo para algunas de sus columnas.
No se emplea la función provista por PHP debido a que se agregan algunos metadatos adicionales como 'clen' y 'serial'.
El array devuelto tiene la siguiente estructura:
array( 'nombre columna 1' => array( 'hasdefault' => [boolean] ¿tiene default?, 'serial' => [boolean] ¿es una columna serial?, 'default' => [mixed] valor por defecto, 'type' => [string] tipo específico para la base de datos, 'gentype', => [string] tipo genérico, una de las constantes DATATYPE_*, 'notnull' => [boolean] ¿debe tener sólo valores no nulos?, 'len' => [int] longitud máxima, 'clen' => [int] actualmente es alias de 'len', 'size' => [int] tamaño, 'scale' => [int] escala, para valores numéricos, 'pkey' => [boolean] ¿es clave primaria?, 'unique' => [boolean] ¿tiene una restricción de unicidad? Es true aún si forma parte de una restricción compuesta ), ... )
Los nombres de columnas (claves del array externo) siempre quedan en minúsculas, independientemente de cómo estén en la tabla.
string | $table | nombre de la tabla |
boolean | $excepcion | indica el comportamiento cuando hay un error: true para emitir una excepción ExcepcionXGAP o false para generar un error de la aplicación |
clavesExtranjeras(string $tabla, string|false $esquema = false) : array
Devuelve los nombres de las claves extranjeras asociadas a una <var>$tabla</var>, las subclases deben sobreescribir segun las tablas de sistema.
Se reimplementa porque ADO devuelve solo el ultimo campo en una clave multicampo.
string | $tabla | |
string|false | $esquema |
referenciasEntrantes(string $tabla, string $esquema = null) : array
Devuelve descripciones de referencias entrantes a <var>$tabla</var>, es decir, de claves extranjeras de otras tablas que hacen referencia a <var>$tabla</var>.
El formato de la estructura devuelta es el siguiente:
array(
'nombre tabla referenciante' => array(
'esquema' => '{esquema tabla referenciante}',
// ==== Subestructura mantenida por compatibilidad ==============
// Detalles de la última referencia procesada de la tabla referenciante
// a
$tabla
.
// Esta subestructura se mantiene por compatibilidad con
// versiones previas, pero la lista completa de referencias desde
// la tabla referenciante se incluye en los siguientes subarrays
// con índices numéricos.
'nombre' => '{nombre del constraint n}',
'columnas' => array(
'{nombre columna referenciante n1}' => '{nombre columna referenciada n1}',
...
),
// ==== Subestructura actual ====================================
// Lista de referencias de la tabla referenciante a $tabla
'cantidad' => n, // cantidad de referencias desde esta tabla a $tabla
// Los subarrays con índices numéricos están ordenados ascendentemente
// por el valor de 'nombre'.
[0] => array(
'nombre' => '{nombre del constraint 1}',
'columnas' => array(
'{nombre columna referenciante 11}' => '{nombre columna referenciada 11}',
'{nombre columna referenciante 12}' => '{nombre columna referenciada 12}',
...
),
), ...
[n-1] => array(
'nombre' => '{nombre del constraint n}',
'columnas' => array(
'{nombre columna referenciante n1}' => '{nombre columna referenciada n1}',
'{nombre columna referenciante n2}' => '{nombre columna referenciada n2}',
...
)
)
),
...
)
Por ejemplo, con el siguiente esquema de BD:
CREATE TABLE s1.pais ( id serial NOT NULL PRIMARY KEY, ... ); CREATE TABLE s1.localidad ( id_pais integer NOT NULL, id_localidad integer NOT NULL, ..., PRIMARY KEY (id_pais, id_localidad), CONSTRAINT fk_localidad_id_pais FOREIGN KEY (id_pais) REFERENCES s1.pais (id) ); CREATE TABLE s1.sucursal ( id serial NOT NULL PRIMARY KEY, id_pais integer NOT NULL, id_localidad integer NOT NULL, ..., CONSTRAINT fk_sucursal_id_pais_id_localidad FOREIGN KEY (id_pais, id_localidad) REFERENCES s1.localidad (id_pais, id_localidad) ); CREATE TABLE s2.deposito ( id serial NOT NULL PRIMARY KEY, id_pais integer NOT NULL, id_localidad integer NOT NULL, id_pais_proveedor_principal integer, id_localidad_proveedor_principal integer, ..., CONSTRAINT fk_deposito_id_pais_id_localidad FOREIGN KEY (id_pais, id_localidad) REFERENCES s1.localidad (id_pais, id_localidad), CONSTRAINT fk_deposito_id_localidad_proveedor_principal FOREIGN KEY (id_pais_proveedor_principal, id_localidad_proveedor_principal) REFERENCES s1.localidad(id_pais, id_localidad) );
el llamado:
$resultado = $conexion->referenciasEntrantes('localidad');
devolvería:
$resultado == array(
'sucursal' => array(
'esquema' => 's1',
'nombre' => 'fk_sucursal_id_pais_id_localidad',
'columnas' => array(
'id_pais' => 'id_pais',
'id_localidad' => 'id_localidad'
),
'cantidad' => 1,
[0] => array(
'nombre' => 'fk_localidad_pais_localidad',
'columnas' => array(
'id_pais' => 'id_pais',
'id_localidad' => 'id_localidad'
)
)
),
'deposito' => array(
'esquema' => 's2',
'nombre' => 'fk_deposito_id_localidad_proveedor_principal',
'columnas' => array(
'id_pais_proveedor_principal' => 'id_pais',
'id_localidad_proveedor_principal' => 'id_localidad'
),
'cantidad' => 2,
[0] => array(
'nombre' => 'fk_deposito_id_localidad_proveedor_principal',
'columnas' => array(
'id_pais_proveedor_principal' => 'id_pais',
'id_localidad_proveedor_principal' => 'id_localidad'
)
),
[1] => array(
'nombre' => 'fk_deposito_id_pais_id_localidad',
'columnas' => array(
'id_pais' => 'id_pais',
'id_localidad' => 'id_localidad'
)
)
)
)
string | $tabla | nombre de la tabla referenciada |
string | $esquema | nombre del esquema donde se encuentra la tabla referenciada; si es nulo, vacío o falso, la tabla se debe poder encontrar sin calificarla con el esquema |
lista de referencias entrantes o null si hay un error
estaSiendoReferenciado(string $tabla, array $registro, string $esquema = null) : boolean
Permite comprobar si un registro en particular de una tabla está siendo referenciado desde alguna otra.
Devuelve un valor booleano que indica si un registro en la tabla $tabla está siendo referenciado desde otra tabla, es decir, hay otra tabla que tiene una clave extranjera que referencia al registro $registro de la tabla $tabla.
string | $tabla | nombre de la tabla |
array | $registro | valores del registro buscado; debe contener al menos los valores de las columnas referenciadas desde otras tablas (normalmente clave primaria o alternativas) |
string | $esquema | nombre del esquema donde se encuentra la tabla; si es nulo, vacío o falso, la tabla se debe poder encontrar sin calificarla con el esquema |
true si el registro está siendo referenciado, false si no, o null si no se puede consultar
comentarioTabla(string $tabla, string $esquema = null, boolean $excepcion = false) : string
Devuelve el comentario de una tabla.
string | $tabla | |
string | $esquema | |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
comentariosColumnas(string $tabla, string $esquema = null, boolean $excepcion = false) : array
Devuelve el comentario de las columnas de una tabla.
El resultado sólo incluye las columnas que tienen comentario.
string | $tabla | |
string | $esquema | |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
un array con la estructura
array('{nombre col 1}' => '{comentario col 1}', ...)puedeSerNulo(array $metadatos, string $campo) : boolean
Permite comprobar si un campo puede tomar valor nulo.
.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo (clave en $metadatos) |
true si el campo permite nulos; false en caso contrario; también retorna true si $campo no está en $metadatos
esFecha(array $metadatos, string $campo) : boolean
Permite comprobar si un campo es de tipo date.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo (clave en $metadatos) |
true si el campo es un date, false en caso contrario; también retorna false si $campo no está en $metadatos
esTimestamp(array $metadatos, string $campo) : boolean
Permite comprobar si un campo es de tipo timestamp.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo (clave en $metadatos) |
true si el campo es un timestamp, false en caso contrario; también retorna false si $campo no está en $metadatos
esHora(array $metadatos, string $campo) : boolean
Permite comprobar si un campo es de tipo time.
Esta implementación devuelve siempre false. Las subclases que correspondan a bases de datos que soporten el tipo de datos TIME deben proveer una implementación adecuada para este método.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo (clave en $metadatos) |
true si el campo es un time, false en caso contrario; también retorna false si $campo no está en $metadatos
esEntero(array $metadatos, string $campo) : boolean
Permite comprobar si un campo es de tipo int.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo (clave en $metadatos) |
true si el campo es un int, false en caso contrario; también retorna false si $campo no está en $metadatos
esDecimal(array $metadatos, string $campo) : boolean
Permite comprobar si un campo campo es de tipo numeric o float o number.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo (clave en $metadatos) |
true si el campo es numérico no entero, false en caso contrario; también retorna false si $campo no está en $metadatos
esReadOnly(array $metadatos, string $campo) : boolean
Permite comprobar si un campo es de sólo lectura.
No implementado. Por el momento, retorna siempre falso.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo (clave en $metadatos) |
true si el campo es de sólo lectura, false en caso contrario; también retorna false si $campo no está en $metadatos
esSerial(array $metadatos, string $campo) : boolean
Permite comprobar si un campo es de tipo serial.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo (clave en $metadatos) |
true si el campo es un date, false en caso contrario; también retorna false si $campo no está en $metadatos
tamanoMaximo(array $metadatos, string $campo) : integer
Retorna el tamaño máximo en caracteres que puede tener un campo en una tabla de la base de datos.
Para las columnas numéricas se asume base 10.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo (clave en $metadatos) |
el tamaño máximo, o 0 si no existe $campo en $metadatos
aBooleanTF(mixed $valor, string $true, string $false) : boolean
Transforma un valor dado en booleano, de acuerdo a lo que se espera que devuelva la base de datos.
mixed | $valor | |
string | $true | valor verdadero en la BD |
string | $false | valor falso en la BD |
$valor transformado en booleano; puede devolver null si $valor no es booleano ni coincide con $true ni $false
aBoolean(mixed $valor) : boolean
Transforma un valor dado en booleano, de acuerdo a lo que se espera que devuelva la base de datos.
Utiliza los parámetros de configuración XGAP_CONF_VALOR_VERDADERO_SQL y XGAP_CONF_VALOR_FALSO_SQL.
mixed | $valor |
$valor transformado en booleano; puede devolver null si $valor no es booleano ni coincide con los parámetros de configuración mencionados
obtenerResultado(\ADORecordSet $rs, integer $fila, string $columna) : mixed
Dado un RecordSet obtiene el valor de una columna para una fila especificada. Es para encapsular las llamadas dependientes a la base empleada.
\ADORecordSet | $rs | |
integer | $fila | |
string | $columna |
obtenerResultadoCompleto(\ADORecordSet $rs) : array
Devuelve un array, indexado de 0 a $this->cantidadDeFilas($rs) - 1, con todas las filas en el recordset.
\ADORecordSet | $rs |
los datos en el recordset; vacío si el recordset no tiene filas; null si el recordset no es válido
operadoresBinariosComparacion() : array
Devuelve una lista de todos los operadores binarios de comparación definidos por las constantes <var>self::BIN_COMP_OP_*</var>.
None found |
textoOperadorBinarioComparacion(integer $op) : string
Devuelve el operador SQL que corresponde a <var>$op</var>.
integer | $op | una de las constantes self::BIN_COMPOP* |
None found |
expresionComparacionBinaria(string $izq, string $der, integer|string $op, boolean $escapar_comodines_der = false, boolean $traducir_izq = true, boolean $traducir_der = true, boolean $comparar_en_mayusculas = null, boolean $str_izq = false, boolean $str_der = true) : string
Construye una expresión de comparación SQL, dadas una expresión izquierda, una derecha y un operador.
Este método no escapa las comillas en las expresiones dadas; de ser necesario se debe hacer antes de invocarlo.
string | $izq | expresión izquierda |
string | $der | expresión derecha |
integer|string | $op | operador; una de las constantes self::BIN_COMPOP*, o el operador a usar si no es uno de los predefinidos, por ejemplo '%' |
boolean | $escapar_comodines_der | ¿se deben escapar los comodines (%, _) que pudiera haber en la expresión derecha? |
boolean | $traducir_izq | ¿se deben traducir los caracteres acentuados de la expresión izquierda al correspondiente caracter sin acento? |
boolean | $traducir_der | ¿se deben traducir los caracteres acentuados de la expresión derecha al correspondiente caracter sin acento? |
boolean | $comparar_en_mayusculas | ¿las comparaciones se deben hacer transformando los valores a mayúsculas? si es null, toma el valor XGAP_VAL_FORZAR_MAYUSCULAS si está definido o XGAP_CONF_COMPARAR_EN_MAYUSCULAS si no |
boolean | $str_izq | ¿la expresión izquierda se debe considerar como un string SQL? en ese caso, se encierra entre comillas |
boolean | $str_der | ¿la expresión derecha se debe considerar como un string SQL? en ese caso, se encierra entre comillas; tener en cuenta que si $op es uno de self::BIN_COMPOP{SW|EW|CONT|NSW|NEW|NCONT}, siempre se considera como string, independientemente del valor de este parámetro |
None found |
expresionComparacionValorEntre(string $subexpr_valor, mixed $limite_inf, mixed $limite_sup, boolean $limite_inf_inclusive = true, boolean $limite_sup_inclusive = true, string $subexpr_limite_inf = null, string $subexpr_limite_sup = null) : string
Construye una expresión de comparación correspondiente a un intervalo con límites dados.
Este método no aplica ningún filtro o escape a los valores que recibe, ni construye las subexpresiones de acuerdo al tipo de datos de la columna implicada, por lo que el llamador debe asegurarse de pasar valores correctos. Tampoco comprueba que el límite inferior sea menor que el superior.
Ejemplos:
// $_REQUEST['fecha_alta_desde'] == '01/01/2014'
// $_REQUEST['fecha_alta_hasta'] == '31/12/2015'
$fecha_alta_desde = $conexion->qstr(Request::obtener(fecha_alta_desde));
$fecha_alta_hasta = $conexion->qstr(Request::obtener(fecha_alta_hasta));
$expr = $conexion->expresionComparacionValorEntre('fecha_alta',
$fecha_alta_desde, $fecha_alta_hasta, true, true,
"date '$fecha_alta_desde'", "date '$fecha_alta_hasta'");
// $expr == 'fecha_alta >= date '01/01/2014' AND fecha_alta <= date '31/12/2015'
// $_REQUEST['cant_menor'] == '5' // $_REQUEST['cant_mayor'] == '' $cant_menor = filter_var(Request::obtener('cant_menor', FILTER_SANITIZE_NUMBER_INT); $cant_mayor = filter_var(Request::obtener('cant_mayor', FILTER_SANITIZE_NUMBER_INT); $expr = $conexion->expresionComparacionValorEntre('cant', $cant_menor, $cant_mayor, false, false); // $expr = 'cant > 5'
string | $subexpr_valor | subexpresión que representa el valor a buscar, comúnmente un nombre de columna |
mixed | $limite_inf | límite inferior del rango; si es vacío, el intervalo no tiene límite inferior; nota: el 0 no se considera vacío |
mixed | $limite_sup | límite superior del rango; si es vacío, el intervalo no tiene límite superior; nota: el 0 no se considera vacío |
boolean | $limite_inf_inclusive | ¿el intervalo debe incluir el $limite_inf (limite_inf <= valor) o no (limite_inf < valor)? |
boolean | $limite_sup_inclusive | ¿el intervalo debe incluir el $limite_sup (limite_sup >= valor) o no (limite_sup > valor)? |
string | $subexpr_limite_inf | subexpresión a usar como límite inferior dentro de la expresión que se retorna, por ejemplo "date '$limite_inf'"; si es vacía, se usa $limite_inf |
string | $subexpr_limite_sup | subexpresión a usar como límite superior dentro de la expresión que se retorna, por ejemplo "date '$limite_sup'"; si es vacía, se usa $limite_sup |
la expresión
None found |
crearConsulta( $SQL, $SQLCount, string $select, string $from, string $where, string $orderBy, string $groupBy, string $having, array $filtros, array $columnasFiltros, string $condiciones = '', string $parametrosACondicion = '', string $condicionesPersonalizadas = '', string $orden = '', boolean $stripslashes = true, boolean $comparar_en_mayusculas = null)
Construye una consulta de acuerdo a los parametros de entrada.
$SQL | ||
$SQLCount | ||
string | $select | expresión para el SELECT |
string | $from | expresión para el FROM |
string | $where | expresión para el WHERE |
string | $orderBy | expresión para el ORDER BY |
string | $groupBy | expresión para el GROUP BY |
string | $having | expresión para el HAVING |
array | $filtros | valores por los que se debe filtrar el resultado |
array | $columnasFiltros | expresiones o nombres de columnas que se usan en los filtros |
string | $condiciones | ??? |
string | $parametrosACondicion | ignorar -- no se está usando |
string | $condicionesPersonalizadas | ??? |
string | $orden | ??? |
boolean | $stripslashes | ¿se debe aplicar {@link stripslashes()} a los valores de $filtros? Este parámetro existe y tiene valor por defecto true por compatibilidad con versiones anteriores. |
boolean | $comparar_en_mayusculas | ¿las comparaciones se deben hacer transformando los valores a mayúsculas? si es null, toma el valor XGAP_VAL_FORZAR_MAYUSCULAS si está definido o XGAP_CONF_COMPARAR_EN_MAYUSCULAS si no |
todo |
Completar la documentación de este método |
---|
crearConsultaCustom( $SQL, $SQLCount, string $orderBy, array $filtros, array $columnasFiltros, string $condiciones = '', string $condicionesPersonalizadas = '', string $orden = '', boolean $stripslashes = true, boolean $comparar_en_mayusculas = null)
Se deben proveer <var>$SQL</var> y <var>$SQLCount</var> con las consultas ya construidas; este método se encarga de agregar los filtros.
$SQL | ||
$SQLCount | ||
string | $orderBy | expresión para el ORDER BY |
array | $filtros | valores por los que se debe filtrar el resultado |
array | $columnasFiltros | expresiones o nombres de columnas que se usan en los filtros |
string | $condiciones | ??? |
string | $condicionesPersonalizadas | ??? |
string | $orden | ??? |
boolean | $stripslashes | ¿se debe aplicar {@link stripslashes()} a los valores de $filtros? Este parámetro existe y tiene valor por defecto true por compatibilidad con versiones anteriores. |
boolean | $comparar_en_mayusculas | ¿las comparaciones se deben hacer transformando los valores a mayúsculas? si es null, toma el valor XGAP_VAL_FORZAR_MAYUSCULAS si está definido o XGAP_CONF_COMPARAR_EN_MAYUSCULAS si no |
None found |
crearConsultaGenerica(string $from, array|string $cols, array $incluir = null, array $excluir = null, array $clausulas_extra = null)
Crea una consulta SELECT.
string | $from | |
array|string | $cols | columna o columnas a incluir en el SELECT |
array | $incluir | filtro por inclusión; debe tener el formato: array( // columna a incluir en la condición // => valor o valores que debe tener esa columna array({string col} => {array|scalar valores}, ... ) |
array | $excluir | filtro por exclusion; debe tener el formato: array( // columna a incluir en la condición // => valor o valores que no debe tener esa columna array({string col} => {array|scalar valores}, ... ) |
array | $clausulas_extra | otras cláusulas SQL a incluir en la consulta; las claves de este array pueden ser: 'WHERE', 'GROUP BY', 'HAVING', 'ORDER BY' |
None found |
getTablas(string $esquema = '', string $mascara = null, boolean $excepcion = false) : array
Retorna un array con los nombres de las tablas en la base de datos.
La implementación provista en esta clase ignora el parámetro $esquema, dado que utiliza ADOConnection.MetaTables, que no lo soporta. Por este motivo, el arreglo devuelto tiene la forma:
array('' => array('tabla1', 'tabla2', ...))Las subclases pueden proveer una implementación que lo utilice.
string | $esquema | nombre del esquema a obtener |
string | $mascara | filtro a aplicar en la búsqueda para limitar los nombres retornados; usa la sintaxis de LIKE de SQL; por ejemplo, $mascara = 'TMP%' |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
lista de tablas agrupadas por esquema, en el formato:
array('esquema1' => array('tabla1', 'tabla2', ...), 'esquema2' => array(...), ...); null si ocurre un errorNone found |
getVistas(string $esquema = '', string $mascara = null, boolean $excepcion = false) : array
Retorna un array con los nombres de las vistas en la base de datos.
La implementación provista en esta clase ignora el parámetro $esquema, dado que utiliza ADOConnection.MetaTables, que no lo soporta. Por este motivo, el arreglo devuelto tiene la forma:
array('' => array('vista1', 'vista2', ...)). Las subclases pueden proveer una implementación que lo utilice.string | $esquema | nombre del esquema a obtener |
string | $mascara | filtro a aplicar en la búsqueda para limitar los nombres retornados; usa la sintaxis de LIKE de SQL; por ejemplo, $mascara = 'TMP%' |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
lista de vistas agrupadas por esquema, en el formato:
array('esquema1' => array('vista1', 'vista2', ...), 'esquema2' => array(...), ...); null si ocurre un errorNone found |
qstr(string $str, boolean $magic_quotes_enabled = false) : string
Escapa las comillas que pudiera haber en <var>$str</var>, pero no lo encierra entre comillas.
string | $str | |
boolean | $magic_quotes_enabled |
None found |
concat() : string
Devuelve el string SQL que corresponde a la concatenación de los valores dados.
Por ejemplo, para PostgreSQL:
$conexion->concat('apellido', "', '", 'nombre') == "apellido||', '||nombre"
todo |
agregar testeo |
---|
sqlstr2php(string $str) : string
Transforma un valor que puede ser un string SQL en un string PHP.
Si $str es un string que comienza y termina con comillas simples,
devuelve el string sin comillas. Caso contrario, devuelve el string sin modificar.
Por ejemplo:
$conexion->sqlstr2php("'t'") == "t"
$conexion->sqlstr2php("5") == "5"
string | $str |
None found |
setSeguridad(\iSeguridad $seguridad)
Establece el objeto iSeguridad que se aplica a esta conexión.
\iSeguridad | $seguridad |
None found |
getSeguridad() : \iSeguridad
Retorna el objeto iSeguridad que se aplica a esta conexión.
None found |
cambiarPathBusqueda(string $esquema)
Cambia el path de busqueda en lo que se refiere a esquemas.
string | $esquema |
None found |
restablecerPathBusqueda()
Restablece el path de busqueda en lo que se refiere a esquemas.
None found |
ejecutarStoredProcedure(string $sp, boolean $registro_log = false) : \RecordSet
Ejecuta un Stored Procedure.
string | $sp | línea de ejecución del stored procedure (nombre y parámetros) |
boolean | $registro_log | ¿guardar un registro de la operación en el log de auditoría? |
None found |
siguienteId(string $secuencia) : mixed
Devuelve el siguiente valor de una secuencia de la base.
string | $secuencia | nombre de la secuencia |
el siguiente ID en la secuencia, o 0 si la operación no está soportada por la base
None found |
existeFilaCond(string $tabla, string $cond, boolean $excepcion = false) : boolean
Permite comprobar si existe al menos una fila en una tabla, dada una condición.
string | $tabla | el nombre de la tabla |
string | $cond | la condición; por ejemplo: $cond = "cantidad > 0 AND nombre LIKE 'a%'" |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
None found |
existeFila(string $tabla, mixed $columnas, mixed $valores, boolean $permitir_vacios = false, boolean $excepcion = false) : boolean
Permite comprobar si existe al menos una fila en una tabla que tenga ciertos valores.
La comparación se hace por igualdad entre las columnas y los valores dados.
Si ambos parámetros $columnas y $valores son arrays, la condición se construye por pares con la misma posición, por lo cual deben tener la misma cantidad de elementos. Si no, se busca el valor $valores en la columna $columnas.
Por ejemplo, si $columnas = array('id1', 'id2') y $valores = array(8, 45), entonces se buscan filas que cumplan $tabla.id1 = 8 y $tabla.id2 = 45.
string | $tabla | nombre de la tabla |
mixed | $columnas | (array | string) nombre/s de la/s columna/s donde se deben buscar los valores |
mixed | $valores | (array | mixed) valor/es a buscar en la/s columna/s |
boolean | $permitir_vacios | si es false, cualquier valor en $valores que corresponda a un string vacío hace que se retorne false |
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
None found |
existeProcedure(string $nombre) : boolean
Verifica la existencia de un stored procedure en la base.
string | $nombre | nombre del stored procedure |
true si el stored procedure existe
None found |
prepararConsulta(string $sql) : array
Prepara una consulta para ejecutar repetidas veces.
string | $sql |
todo |
proveer formas de ejecutar la consulta preparada; hasta tanto, este método no tiene ninguna utilidad |
---|
blobEncode(string $blob) : string
Codifica un valor de tipo BLOB en el formato requerido para enviarlo a la base de datos.
Si el driver en uso no requiere codificación de los BLOBs, el valor de entrada se retorna sin modificar.
string | $blob |
None found |
blobDecode(string $blob, integer $maxsize = false) : string
Decodifica un BLOB obtenido desde la base de datos.
Si el driver en uso no necesita decodificación, el valor de entrada se retorna sin modificar.
string | $blob | |
integer | $maxsize | número máximo de bytes a retornar |
None found |
StartTrans(boolean $log = true)
Inicia de una transacción.
Las transacciones se pueden anidar.
Usar en combinación con CompleteTrans()
boolean | $log | ¿se debe guardar un registro de la operación en el log? |
None found |
CompleteTrans(boolean $autoComplete = true, boolean $log = true)
Finaliza una transacción.
Realiza un commit o un rollback según corresponda.
Usar en combinación con StartTrans().
boolean | $autoComplete | si es true, realiza un commit si no se detectaron errores SQL desde el inicio de la transacción o un rollback si se detectó alguno; si es false fuerza un rollback aún cuando no se haya detectado ningún error |
boolean | $log | ¿se debe guardar un registro de la operación en el log? |
returns |
boolean true si realizó commit, false si realizó rollback. |
---|
FailTrans(boolean $log = true)
Fuerza un estado de error en la transacción, obligando a realizar un rollback al final de la misma.
El rollback sólo se va a producir cuando se invoque a CompleteTrans().
boolean | $log | ¿se debe guardar un registro de la operación en el log? |
None found |
None found |
establecerCharset()
Establece el charset de la conexion. Por defecto no tiene efecto.
None found |
None found |
prepararFechas( $fields_values, array $metadatos)
Prepara la inserción/actualización de fechas. Por defecto no tiene efecto.
$fields_values | ||
array | $metadatos | array devuelto por {@link metaDatos()} |
None found |
tmpCountQuery( $SQL)
Crea una consulta sql para la cuenta, con un alias.
$SQL |
None found |
__construct(\Auditor $auditor, string $dbms)
Crea una conexión a la base de datos, en función de variables especificadas.
\Auditor | $auditor | |
string | $dbms |
None found |
conectar(string $serv_completo, string $usuario, string $password, string $base) : boolean
Establece la conexión a la base de datos.
La conexión es transitoria o persistente, dependiendo de XGAP_CONF_PERSISTENTE.
string | $serv_completo | en formato servidor:puerto |
string | $usuario | |
string | $password | |
string | $base |
true si la conexión se realizó correctamente
None found |
consultaParaLog(string $sql) : string
Formatea una consulta SQL para emitir a un log
string | $sql |
None found |
errorConsulta(string $consulta, string $mensaje = null, boolean $disparar_excepcion = false, \Exception $excepcion_original = null)
string | $consulta | la consulta que produjo el error |
string | $mensaje | un mensaje para el usuario |
boolean | $disparar_excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
\Exception | $excepcion_original | la excepción que motivó la invocación a este método, si la hubo |
si $disparar_excepcion es TRUE
None found |
procesarValorPorDefecto(string $valor) : string
Adapta los valores devueltos por ADODB para los metadatos de una columna a un formato válido.
Actualmente los está encerrando entre '', lo cual dificulta su uso en formularios HTML.
Esta función elimina las ' iniciales y finales que pudiera tener el valor pasado como parámetro.
string | $valor |
None found |
metaType(\ADOFieldObject $field, \ADORecordSet $rs) : string
Wrapper a ADORecordSet::MetaType().
\ADOFieldObject | $field | |
\ADORecordSet | $rs |
una de las constantes self::DATATYPE_*
None found |
ajustarMetacolumnas(string $tabla, $metacolumnas, boolean $excepcion = false)
Permite que las subclases modifiquen los metadatos obtenidos mediante ADOConnection.MetaColumns(), dado que pueden variar dependiendo del driver.
string | $tabla | |
$metacolumnas | ||
boolean | $excepcion | indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación |
None found |
puedeSerNuloInterno(array $metadatos, string $campo) : boolean
Permite comprobar si un campo puede tomar valor nulo.
.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo en minúsculas (clave en $metadatos) |
true si el campo permite nulos; false en caso contrario
None found |
esFechaInterno(array $metadatos, string $campo) : boolean
Permite comprobar si un campo es de tipo date.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo (clave en $metadatos) |
true si el campo es un date, false en caso contrario; también retorna false si $campo no está en $metadatos
None found |
esTimestampInterno(array $metadatos, string $campo) : boolean
Permite comprobar si un campo es de tipo timestamp.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo en minúsculas (clave en $metadatos) |
true si el campo es un timestamp, false en caso contrario
None found |
esHoraInterno(array $metadatos, string $campo) : boolean
Permite comprobar si un campo es de tipo time.
Esta implementación devuelve siempre false. Las subclases que correspondan a bases de datos que soporten el tipo de datos TIME deben proveer una implementación adecuada para este método.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo (clave en $metadatos) |
true si el campo es un time, false en caso contrario; también retorna false si $campo no está en $metadatos
None found |
esEnteroInterno(array $metadatos, string $campo) : boolean
Permite comprobar si un campo es de tipo int.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo en minúsculas (clave en $metadatos) |
true si el campo es un int, false en caso contrario
None found |
esDecimalInterno(array $metadatos, string $campo) : boolean
Permite comprobar si un campo campo es de tipo numeric o float o number.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo en minúsculas (clave en $metadatos) |
true si el campo es numérico no entero, false en caso contrario
None found |
esBooleanoInterno(array $metadatos, string $campo) : boolean
Retorna verdadero o falso dependiendo si el campo es de tipo booleano.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo en minúsculas (clave en $metadatos) |
None found |
esSerialInterno(array $metadatos, string $campo) : boolean
Permite comprobar si un campo es de tipo serial.
array | $metadatos | array devuelto por {@link metaDatos()} |
string | $campo | nombre del campo, en minúsculas (clave en $metadatos) |
true si el campo es un date, false en caso contrario
None found |
tamanoMaximoInt( $metadatos_campo)
Tamaño máximo para campos gentype==self::DATATYPE_INT.
No se debe tener en cuenta $metadatos_campo['len|clen'].
$metadatos_campo |
None found |
tamanoMaximoNum( $metadatos_campo)
Tamaño máximo para campos gentype==self::DATATYPE_NUM.
No se debe tener en cuenta $metadatos_campo['len|clen'].
$metadatos_campo |
None found |
realizarEjecucionStoredProcedure(string $sp) : \RecordSet
Implementación dependiente de la base de datos de la ejecución de un stored procedure
string | $sp | línea de ejecución del stored procedure (nombre y parámetros) |
None found |
separarEsquemaTabla(string $esquemaytabla, $esquema, $tabla)
Dado un string que contiene un nombre de tabla que posiblemente incluye el esquema (<var>$esquemaytabla</var>), lo separa en nombre de esquema (<var>$esquema</var>) y nombre de tabla (<var>$tabla</var>).
Código adaptado de ADOConnection._findschema().
string | $esquemaytabla | |
$esquema | ||
$tabla |
None found |