*
{$query}
");
try {
$res = $this->obj_conexion->exec($query);
}
catch (Exception $e) {
//Excepciones PDO
$this->obj_errorBD->setError('IGEP-1', 'IgepPersistencia.php', "'Insertar ($numInsercion de $numFilas)", $e->getMessage());
return;
}
//Tratamiento de errores
if ((!$this->is_pdo AND PEAR::isError($res)) OR ($this->is_pdo AND $res===FALSE)) {
$this->obj_errorBD->setError('IGEP-1', 'IgepPersistencia.php', "'Insertar ($numInsercion de $numFilas)", $res);
return;
}
}//Fin for filas
}//Fin insertar
/**
* Dada una tupla o fila de la tabla realiza el DELETE. La
* tupla debe ser un array asociativo del modo ["campo"]
* =>"valor". Esta función recibe la fila a borrar porque
* realiza una comprobación de consistencia (se borra la
* tupla siempre y cuando alguien no la haya modificado).
*
* @access public
* @param array $v_filaDatosWhereConcurrencia
*/
// REDMINE #23202 $v_filaDatosWhereConcurrencia
// $v_filaDatosWhereConcurrencia, que contendrá los campos a añadir al where y no encontrarse con problemas de concurrencia
public function borrar($v_filaDatosWhereConcurrencia) {
$str_WHERE = '';
if (is_array($v_filaDatosWhereConcurrencia) && (count($v_filaDatosWhereConcurrencia) > 0))
{
foreach($v_filaDatosWhereConcurrencia as $prop => $val) {
if ($str_WHERE != '') {
$str_WHERE .= ' AND ';
}
$str_WHERE .= $prop;
if (gettype($val) == "string") {
if($val != "") {
$str_WHERE .= "='".$val."'";
}
else {
$str_WHERE .= " is null";
}
}
else {
if($val != "") {
$str_WHERE .= "=".$val;
}
else {
$str_WHERE .= " is null";
}
}
}//FIN foreach
$str_WHERE = " \nWHERE {$str_WHERE}";
}
// Se monta la query con los datos obtenidos
$consulta = "DELETE FROM {$this->str_tabla} {$str_WHERE}";
//Debug:Indicamos que ejecutamos la consulta
IgepDebug::setDebug(DEBUG_IGEP,"". __CLASS__ . ": Ejecutamos borrado:{$consulta}
");
try {
$res = $this->obj_conexion->exec($consulta);
}
catch (Exception $e) {
//Excepciones PDO
$this->obj_errorBD->setError("IGEP-2",'IgepPersistencia.php',"borrar",$e->getMessage(),$consulta);
return;
}
//Tratamiento de errores
if ((!$this->is_pdo AND PEAR::isError($res)) OR ($this->is_pdo AND $res===FALSE))
$this->obj_errorBD->setError("IGEP-2",'IgepPersistencia.php',"borrar",$res,$consulta);
else {
//Comprobamos si existe error de concurrencia.
if ($res==0)
$this->obj_errorBD->setError('IGEP-4','IgepPersistencia.php','borrar','','Error de Concurrencia: '.$consulta);
}
}// Fin de borrar
/**
* Dada una tupla o fila de la tabla realiza el UPDATE. Recibe
* dos parámetros; uno es la tupla con los nuevos datos y otro es
* la tupla con los datos que fueron visualizados.Esto se debe a
* que realiza una comprobación de consistencia (se actuliza la
* tupla siempre y cuando alguien no la haya modificado). Los dos
* parámetros son arrays asociativos de la forma ["campo"]=>"valor".
*
* @access public
* @param array $v_filaDatos
* @param array $v_filaDatosAntiguos: Datos con los valores anteriores a los nuevos cambios en los campos
* @param array $v_filaDatosWhereConcurrencia: Campos que se aplicarán en el WHERE del UPDATE y evitar los problemas de concurrencia
*/
// REDMINE #23202 $v_filaDatosWhereConcurrencia
// Se necesitan dos arrays, el de datos antiguos para comparar si ha habido cambios, y el, m_datosWhereConcurrencia, que contendrá los campos a añadir al where y no encontrarse con problemas de concurrencia
public function actualizar($v_filaDatos, $v_filaDatosAntiguos, $v_filaDatosWhereConcurrencia)
{
// Definimos el SET del UPDATE
$str_SET = '';
foreach($v_filaDatos as $prop => $val) {
if( $v_filaDatosAntiguos[$prop]!==$val || (!isset($v_filaDatosAntiguos[$prop]) && isset($val)) ) {
if ($str_SET != '') {
$str_SET .= ' ,';
}
$str_SET .= $prop;
if (gettype($val) == "string") {
if($val != "") {
$str_SET .= "='".$val."'";
}
else {
$str_SET .= "= null";
}
}
else {
if($val != "") {
$str_SET .= "=".$val;
}
else {
$str_SET .= "= null";
}
}
}
}//FIN foreach
// Definimos el WHERE del UPDATE
$str_WHERE = '';
if (is_array($v_filaDatosWhereConcurrencia) && (count($v_filaDatosWhereConcurrencia) > 0))
{
foreach($v_filaDatosWhereConcurrencia as $prop => $val) {
if ($str_WHERE != '') {
$str_WHERE .= ' AND ';
}
$str_WHERE .= $prop;
if (gettype($val) == 'string') {
if($val != '') {
$str_WHERE .= "='".$val."'";
}
else {
$str_WHERE .= ' is null';
}
}
else {
if($val != '') {
$str_WHERE .= '='.$val;
}
else {
$str_WHERE .= ' is null';
}
}
}//FIN foreach
$str_WHERE = " \nWHERE {$str_WHERE}";
}
// Ejecutamos la sentencia de Actualización
if ($str_SET !='') {
$consulta = "UPDATE {$this->str_tabla} SET {$str_SET} {$str_WHERE}";
//Debug:Indicamos que ejecutamos la consulta
IgepDebug::setDebug(DEBUG_IGEP, __CLASS__ . ": Ejecutamos actualización:{$consulta}
");
try {
$res = $this->obj_conexion->exec($consulta);
}
catch (Exception $e) {
//Excepciones de PDO
$this->obj_errorBD->setError('IGEP-3','IgepPersistencia.php','actualizar',$e->getMessage(), $consulta);
return;
}
//Errores de pear o pdo
if ((!$this->is_pdo AND PEAR::isError($res)) OR ($this->is_pdo AND $res===FALSE))
$this->obj_errorBD->setError('IGEP-3','IgepPersistencia.php','actualizar',$res, $consulta);
else {
//Comprobamos si existe error de concurrencia.
if ($res==0) {
$this->obj_errorBD->setError('IGEP-4','IgepPersistencia.php','actualizar','','Error de Concurrencia: '.$consulta.''); } } }//if de condición no vacia }//FIN de actualizar }//FIN clase IgepPersistencia ?>