Foros del Web » Programando para Internet » PHP »

preparar datos para guardar en db

Estas en el tema de preparar datos para guardar en db en el foro de PHP en Foros del Web. Hola, yo estoy haciendo lo siguiente: Leo el contenido de un campo de la bd, lo paso a otro server y lo guardo exactamente como ...
  #1 (permalink)  
Antiguo 18/11/2006, 15:26
Avatar de ASCENDEDMASTERS  
Fecha de Ingreso: julio-2005
Ubicación: Pergamino, Buenos Aires
Mensajes: 302
Antigüedad: 18 años, 9 meses
Puntos: 1
preparar datos para guardar en db

Hola, yo estoy haciendo lo siguiente:

Leo el contenido de un campo de la bd, lo paso a otro server y lo guardo exactamente como lo recibo. El gran problema es que nose como hicieron para guardarlo, se que usan ' (comillas simples) para los campos de texto, pero yo hago lo mismo cuando lo recibo y nada, no funciona :s.

Debo guardar el contenido sin modificarlo, y no se que hacer con las comillas
__________________
Dios es la unica fuente de todo bien.
  #2 (permalink)  
Antiguo 18/11/2006, 16:47
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Podrías poner el código y algún ejemplo?
  #3 (permalink)  
Antiguo 18/11/2006, 16:54
Avatar de ASCENDEDMASTERS  
Fecha de Ingreso: julio-2005
Ubicación: Pergamino, Buenos Aires
Mensajes: 302
Antigüedad: 18 años, 9 meses
Puntos: 1
(cambie el nombre del sitio para mas seguridad por [somesite])

archivo PHP en el nuevo servidor (este pide al servidor viejo los datos y los guarda en una bd del nuevo)
Código PHP:
include('conection.php');
$link=conectarse();


$tabla=$_GET['tabla'];
$cmp=$_GET['cmp'];
if(!isset(
$_GET['cmp']) || !isset($_GET['tabla'])){
    echo 
'faltan parametros por url';
    exit;
}

set_time_limit(300);
$a=file('http://[somesite].com/control/bd.php?tabla='.$tabla.'&cmp='.$cmp);
if(
is_numeric(strpos('@',$a[0]))){
    echo 
$a[0];
    echo 
'<br>#18';
    exit;
}
echo 
'<b>TOTAL: <font color=#ff0000>'.$a[0].'</font></b><p>';
$a=explode(' ',trim($a[1]));

echo 
'<div align=center>';
for(
$i=0;$i<10;$i++)
{
    global 
$link,$tabla,$cmp;
    
set_time_limit(300);
    
$show='';
    
$b=file('http://[somesite].com/control/bd.php?id='.$a[$i].'&tabla='.$tabla.'&cmp='.$cmp);
    
$show=trim(implode("\n",$b));
    
mysql_query($show,$link) or die(mysql_error().'<p>'.$show);
    echo 
'<img src="http://pirata777.com/phpBB2/images/bot/ok.jpg" border=0>';
}
echo 
'<h1>JOYA!</h1>'



PHP del servidor viejo
Código PHP:
<?

include('conection.php');
$link=conectarse();

if(!isset(
$_GET['cmp']) || !isset($_GET['tabla'])){
    echo 
'@ERROR #1';
    exit;
}

$tabla=$_GET['tabla'];
$g=$_GET['cmp'];

if(!isset(
$_GET['id']))
{
    global 
$tabla,$g;
    
$hola='SELECT '.$g.' FROM phpbb_'.$tabla;
    
$sql=mysql_query($hola,$link) or die('@mysql =>'.mysql_error());
    echo 
mysql_num_rows($sql);
    echo 
"\n";
    while(
$res=mysql_fetch_assoc($sql))
        echo 
$res['post_id'].' ';
    exit;
}

$sql2='SELECT * FROM phpbb_'.$tabla.' WHERE '.$g.'='.$_GET['id'];
$sql=mysql_query($sql2,$link);
if(!
$sql){
    echo 
'@ERROR <b>'.$sql2.'</b>';
    exit;
}    
$veo=mysql_fetch_assoc($sql);
$mem=count($veo)-1;
echo 
'INSERT INTO phpbb_'.$tabla.' (';
$guia=0;
foreach(
$veo as $k => $veo_)
{
    echo 
$k;
    if(
$guia!=$mem)
        echo 
', ';
    else
        echo 
') VALUES (';
    
$guia++;
}
$guia=0;
foreach(
$veo as $k => $veo_)
{
    global 
$mem$guia;
    echo 
' ';
    
$com=(is_numeric($veo[$k]))?'':'\'';
    echo 
$com.$veo[$k].$com;
    
$proximo=($guia==$mem)?')':', ';
    echo 
$proximo;
    
$guia++;
}

cuando ejecuto el php en el server nuevo llama el php del viejo este le devuelve los id de los campos de esta tabla que le pasamos el nombre por get junto con el campo que contiene los id por get tambien. luego con un for va recorriendo el array, en cada posicion llama al php viejo pidiendole los datos de ese id y esa tabla que se los pasamos por get. El viejo le devuelve el query asi:
Código PHP:
INSERT INTO tabla (campo1,campo2,campo3VALUES (9,'dato','otro dato'
despues toma esto y hace el query y listo, eso por cada id.

La clave esta en lograr hacer el query sin tener que escapar nada del contenido que recibo del server viejo porque despues tendre que modificar el codigo que usa esa bd pero no debo hacerlo porque de alguna forma lo metieron en la base de datos asique asi como salio asi tiene que entrar sin problemas si es el mismo contenido sin cambios, encima en el php que inserta datos en la bd del foro usa comillas simples para los campos alfanumericos y aca me tira error cuando hay una comilla simple en el campo :?
__________________
Dios es la unica fuente de todo bien.

Última edición por ASCENDEDMASTERS; 18/11/2006 a las 17:00
  #4 (permalink)  
Antiguo 20/11/2006, 17:36
Avatar de ASCENDEDMASTERS  
Fecha de Ingreso: julio-2005
Ubicación: Pergamino, Buenos Aires
Mensajes: 302
Antigüedad: 18 años, 9 meses
Puntos: 1
problema solucionado asi

Código PHP:
<?$campo=preg_replace("/((\\\)*)?'/i""codigo hexadecimal de comilla",$campo);?>
& #39; es el codigo de la comilla simple, pero sin espacio entre & y # ;)
__________________
Dios es la unica fuente de todo bien.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:16.