Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/05/2009, 13:15
jmianez
 
Fecha de Ingreso: septiembre-2005
Mensajes: 7
Antigüedad: 19 años, 2 meses
Puntos: 0
Problemas al migrar servidor con PHP y Postgres

Tengo una web funcionando Ok con PHP 4.3.3 y Postgres 7.3.4 (lo sé, antediluvianos )

Estoy migrando a PHP 5.2.0 y Postgres 8.1.11.

Una vez volcada la BBDD, el front-end se visualiza bien, pero en el backoffice, los script de edición y creación de registros -páginas web- están fallando. Parece que se deba a un problema con comillas simples y dobles ( ' y " ). Lo más curioso es que me da un error parecido, incluso si creo registros que no contienen comillas:

Código PHP:
pg_query() [function.pg-query]: query failederrorsyntax error at or near "\" at character 
¿Existe alguna solución sencilla? No soy programador, sólo un "aporrea teclas avanzado"

Copio la parte del script que da problemas:

Código PHP:
<?php

//iniciamos sesión
require 'libreria.php';
require 
'cabecera.php';
// cabecera común de página

$conid=$HTTP_POST_VARS['conid'];

// echo "<pre>";
// print_r($HTTP_POST_VARS);
// echo "</pre>";

// array idiomas START
$sql="SELECT idiid, descr FROM idiomas ORDER BY idiid;";
$res=pg_query($conn$sql);
$numidi=pg_numrows($res);
    if (
$res && $numidi>0) {
        
$tidi=array();
        for (
$i=0$i $numidi$i++) {
            
$r pg_fetch_row($res$i);
            
$tidi[$i]=array($r[0] , $r[1]);
        }
    }
// array idiomas END



// inicializamos variables
$crear    =false;
$modificar=false;
$guardar  =false;
$borrar   =false;

// seleccionamos la opción
$boton=$HTTP_POST_VARS['submit'];

    if (
$boton == 'Modificar') { $modificar=true;}
elseif (
$boton == 'Guardar')   { $guardar  =true;}
elseif (
$boton == 'Crear')     { $crear    =true;}
elseif (
$boton == 'Borrar')    { $borrar   =true;}



if     (
$borrar){
    
$sql="DELETE FROM contenidos WHERE conid=$conid;";
    
$res=pg_query($conn,$sql);
}elseif(
$guardar){
    
$huboerror=0;
    
// iniciamos la transacción
    
pg_query("BEGIN WORK");
    
$descr =$HTTP_POST_VARS['descr'];
    
$secid =$HTTP_POST_VARS['secid'];
    
$conor =(int)$HTTP_POST_VARS['conor'];
    
$plaid =(int)$HTTP_POST_VARS['plaid'];

    
$sql="UPDATE contenidos SET secid=$secid, descr='$descr', conor=$conor, plaid=$plaid WHERE conid=$conid;";
    
$res=pg_query($conn,$sql);
    if (!
$res) {
        echo 
pg_errormessage($conn);
        echo 
' Error - en la primera sentencia';
        
pg_query($conn,'ROLLBACK');
        
$huboerror=1;
        exit;
    } else {
        
$postdata=array();

        foreach(
$HTTP_POST_VARS['tipag'] as $idiid => $valor){ $postdata[$idiid]['tipag']=$valor;}
        foreach(
$HTTP_POST_VARS['titxt'] as $idiid => $valor){ $postdata[$idiid]['titxt']=$valor;}
        foreach(
$HTTP_POST_VARS['texto'] as $idiid => $valor){ $postdata[$idiid]['texto']=$valor;}
        foreach(
$HTTP_POST_VARS['titiz'] as $idiid => $valor){ $postdata[$idiid]['titiz']=$valor;}
        foreach(
$HTTP_POST_VARS['titdr'] as $idiid => $valor){ $postdata[$idiid]['titdr']=$valor;}

        foreach(
$postdata as $idiid => $misvalores){
            
$tipag=$misvalores['tipag'];
            
$titxt=$misvalores['titxt'];
            
$texto=$misvalores['texto'];
            
$titiz=$misvalores['titiz'];
            
$titdr=$misvalores['titdr'];
            
$sql="UPDATE conidiomas SET ";
            
$sql.=" tipag='$tipag', ";
            
$sql.=" titxt='$titxt', ";
            
$sql.=" texto='$texto', ";
            
$sql.=" titiz='$titiz', ";
            
$sql.=" titdr='$titdr'  ";
            
$sql.="WHERE conid=$conid AND idiid=$idiid;";

            
$res=pg_query($conn,$sql);
            if (!
$res) {
                echo 
pg_errormessage($conn);
                echo 
' Error - en la sengunda sentencia';
                
pg_query($conn,'ROLLBACK');
                
$huboerror=true;
                exit;
            }
        }
        if (!
$huboerror) {
            
pg_query($conn,'COMMIT');
        }
    }
    
$modificar=true;

}elseif (
$crear){

    
$huboerror=false;
    
// iniciamos la transacción
    
pg_query("BEGIN WORK");
    
$res=pg_query($conn"SELECT nextval('public.contenidos_conid_seq');");
    if (
$res$num pg_num_rows($res);
    if (!
$res || $num<|| $num>1) {
        
$huboerror=1;
        exit;
    } else {
        
$r pg_fetch_row($res0);
        
// nos guardamos el id que depués usaremos para guardar el registro
        
$conid $r[0];
    }
    
$descr =$HTTP_POST_VARS['descr'];
    
$secid =$HTTP_POST_VARS['secid'];
    
$conor =(int)$HTTP_POST_VARS['conor'];
    
$plaid =(int)$HTTP_POST_VARS['plaid'];


    
$sql="INSERT INTO contenidos (conid,secid,descr,conor, plaid) ";
    
$sql.="VALUES ($conid, $secid, '$descr', $conor, $plaid);";

    
$res=pg_query($conn,$sql);
    
// check for errors
    
if (!$res) {
        echo 
pg_errormessage($conn);
        echo 
' Error - en la primera sentencia';
        
pg_query($conn,'ROLLBACK');
        
$huboerror=true;
        exit;
    } else {
        
$postdata=array();

        foreach(
$HTTP_POST_VARS['tipag'] as $idiid => $valor){ $postdata[$idiid]['tipag']=$valor;}
        foreach(
$HTTP_POST_VARS['titxt'] as $idiid => $valor){ $postdata[$idiid]['titxt']=$valor;}
        foreach(
$HTTP_POST_VARS['texto'] as $idiid => $valor){ $postdata[$idiid]['texto']=$valor;}
        foreach(
$HTTP_POST_VARS['titiz'] as $idiid => $valor){ $postdata[$idiid]['titiz']=$valor;}
        foreach(
$HTTP_POST_VARS['titdr'] as $idiid => $valor){ $postdata[$idiid]['titdr']=$valor;}

        foreach(
$postdata as $idiid => $misvalores){
            
$tipag=$misvalores['tipag'];
            
$titxt=$misvalores['titxt'];
            
$texto=$misvalores['texto'];
            
$titiz=$misvalores['titiz'];
            
$titdr=$misvalores['titdr'];
            
$sql="INSERT INTO conidiomas (conid,idiid,tipag,titxt,texto,titiz,titdr)";
            
$sql.="VALUES ($conid, $idiid, '$tipag', '$titxt', '$texto', '$titiz', '$titdr');";

            
$res=pg_query($conn,$sql);
            if (!
$res) {
                echo 
pg_errormessage($conn);
                echo 
' Error - en la sengunda sentencia';
                
pg_query($conn,'ROLLBACK');
                
$huboerror=true;
                exit;
            }
        }
        if (!
$huboerror) {
            
pg_query($conn,'COMMIT');
        }
    }
    
$modificar=true;
}



$valores=array();
if(
$conid>0){
    
$sql=" SELECT co.conid, ci.idiid, ci.tipag, ci.titxt, ci.texto, ci.titiz, ci.titdr, co.conor, co.descr, co.secid, co.plaid FROM conidiomas as ci, contenidos as co WHERE co.conid=$conid AND ci.conid=co.conid ORDER BY ci.idiid;";

    
$res=pg_query($conn$sql);
    
$num=pg_numrows($res);
        if (
$res && $num>0) {

            for (
$i=0$i $num$i++) {
                
$r pg_fetch_row($res$i);
                
$conid=$r[0];
                
$idiid=$r[1];
                
$tipag=$r[2];
                
$titxt=$r[3];
                
$texto=$r[4];
                
$titiz=$r[5];
                
$titdr=$r[6];
                
$conor=$r[7];
                
$descr=$r[8];
                
$secid=$r[9];
                
$plaid=$r[10];
                
$valores['conid']=$conid;
                
$valores['descr']=$descr;
                
$valores['tipag'][$idiid]=$tipag;
                
$valores['titxt'][$idiid]=$titxt;
                
$valores['texto'][$idiid]=$texto;
                
$valores['titiz'][$idiid]=$titiz;
                
$valores['titdr'][$idiid]=$titdr;
            }
        }
}
?>
Cualquier ayuda será bienvenida.