Foros del Web » Programando para Internet » PHP »

Problema Modificar en Mysql Cuando Restauro en PHP

Estas en el tema de Problema Modificar en Mysql Cuando Restauro en PHP en el foro de PHP en Foros del Web. Hola, Tengo un problemita. Lo que hago es una copia de seguridad desde PHP, luego la restauro y lo hace bien. Pero cuadno entro en ...
  #1 (permalink)  
Antiguo 03/11/2009, 02:02
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años
Puntos: 1
Problema Modificar en Mysql Cuando Restauro en PHP

Hola,
Tengo un problemita.
Lo que hago es una copia de seguridad desde PHP, luego la restauro y lo hace bien. Pero cuadno entro en MySQL y quiero modificar alguna tabla de dicha restauracion, no me deja editarla...

Utilizo el usuario Administrador en Mysql.
Hos enseño el codigo.

Código PHP:
$hacer_backup=$_POST[hacer_backup];
if(
$hacer_backup=='1'){

  
$usuario "******";
  
$clave "******";
  
$servidor "******";
  
$baseDeDatos "******";

/* Se conecta con la base de datos elegida. */
  
$conexion mysql_connect($servidor,$usuario,$clave) or die(mysql_error());
  @
mysql_select_db($baseDeDatos,$conexion);

/* Se establece el nombre del fichero de la copia, incluyendo la fecha en curso. */
  
$fechaDeLaCopia "-".date("d-m-Y");    
  
$ficheroDeLaCopia $baseDeDatos.$fechaDeLaCopia.".sql";

//COMPROBAR SI EXISTE EL ARCHIVO. ---------------------------------------
if (file_exists($ficheroDeLaCopia)) {
unlink($ficheroDeLaCopia);
}
//------------------------------------------------------------------------

/* Se genera el encabezamiento de la copia y se graba en el fichero correspondiente (el sql). */
  
$encabezamientoDeLaCopia "# Copia de la base de datos creada el: ".date("d-m-Y")."\n# BBDD: $baseDeDatos \r\n";
  
$manejadorDelFicheroDeLaCopia fopen($ficheroDeLaCopia,"a+b");
  
fwrite($manejadorDelFicheroDeLaCopia$encabezamientoDeLaCopia);  
   
  
$basededatos="CREATE DATABASE IF NOT EXISTS datos; \n USE datos; \n\n";
  
fwrite($manejadorDelFicheroDeLaCopia$basededatos); 
  
fclose($manejadorDelFicheroDeLaCopia);     
 
/* Se genera una matriz con los nombres de las tablas que componen la BBDD. */
  
$matrizDeTablas = array();
  
$indiceDeLaMatrizDeTablas 0;
  
$listadoDeTablas mysql_list_tables($baseDeDatos);
  for(
$recorridoDeTablas=0$recorridoDeTablas<mysql_num_rows($listadoDeTablas); $recorridoDeTablas++){     
    
$nombreDeTabla mysql_tablename($listadoDeTablas,$recorridoDeTablas);
    if (
$nombreDeTabla <>"") {
      
$matrizDeTablas[$indiceDeLaMatrizDeTablas] = mysql_tablename($listadoDeTablas,$recorridoDeTablas);
/* Cada vez que se agrega un nombre de tabla a la matriz, se incrementa el índice de la misma, de modo
que, al terminar, tendremos el número total de tablas que conforman la BBDD. */
      
$indiceDeLaMatrizDeTablas++;
    }
  }

  for (
$recorridoDeTablas 0$recorridoDeTablas $indiceDeLaMatrizDeTablas$recorridoDeTablas++){

    
$autoincrementado="";
    
$nombreDeTabla=$matrizDeTablas[$recorridoDeTablas];
/* Se agrega a la consulta SQL el borrado de la tabla (si existe) y su posterior re-creación. */
    
$cadenaSQL "";
    
$cadenaSQL .= "DROP TABLE IF EXISTS $nombreDeTabla; \n";
    
$cadenaSQL .= "CREATE TABLE $nombreDeTabla (\n";

    
$hacerConsultaDeLecturaDeEstructura mysql_query("SHOW FIELDS FROM $nombreDeTabla",$conexion);
/* El cursor obtenido se recorre mediante un bucle, recuperando los datos de cada
campo y agregándolos a la consulta SQL que se almacenará en el fichero de la copia. */
    
while($row mysql_fetch_array($hacerConsultaDeLecturaDeEstructura)) {
      
$cadenaSQL .= "    $row[Field] $row[Type]"// Se agrega el nombre del campo y su tipo.
      
if ($row["Default"] != ""$cadenaSQL .= " DEFAULT '$row[Default]'"// Si hay un valor por defecto, se agrega también.
      
if ($row["Null"] != "YES"$cadenaSQL .= " NOT NULL"// Si no se admite el vlalor NULL, se agrega la correspondiente especificación.
      
if ($row[Extra] != ""$cadenaSQL .= " $row[Extra]"// Si hay alguna propiedad extraordinaria, como, por ejemplo, auto-increment, se agrega a la descripción del campo.
      
if (strstr (strtolower($row[Extra]),"auto_increment")) $autoincrementado=$row[Field];
      
$cadenaSQL .= ",\n"// La descripción de cada campo se termina con una coma y un salto de línea
    
}

    
$cadenaSQL ereg_replace(",\n$",""$cadenaSQL);

    
$hacerConsultaDeLecturaDeEstructura mysql_query("SHOW KEYS FROM $nombreDeTabla",$conexion);
    while(
$row mysql_fetch_array($hacerConsultaDeLecturaDeEstructura)){
      
$nombreDeIndice=$row[Key_name];
      if((
$nombreDeIndice != "PRIMARY") && ($row[Non_unique] == 0)) $nombreDeIndice="UNIQUE|$nombreDeIndice";
      if(!isset(
$listaDeIndices[$nombreDeIndice])) $listaDeIndices[$nombreDeIndice] = array();
      
$listaDeIndices[$nombreDeIndice][] = $row[Column_name];
    }
/* Se agregan los índices a la cadena SQL que contendrá la copiade la base de datos.*/
    
$autoIncluido=FALSE;
    while(list(
$tipoDeIndice$columnas) = @each($listaDeIndices)){
      
$cadenaSQL .= ",\n";
      if(
$tipoDeIndice == "PRIMARY"$cadenaSQL .= "   PRIMARY KEY (" implode($columnas", ") . ")";
      else if (
substr($tipoDeIndice,0,6) == "UNIQUE"$cadenaSQL .= "   UNIQUE ".substr($tipoDeIndice,7)." (" implode($columnas", ") . ")";
      else 
$cadenaSQL .= "   KEY $tipoDeIndice (" implode($columnas", ") . ")";
      if (
implode($columnas", ")==$autoincrementado$autoIncluido=TRUE;
    }
    if (!
$autoIncluido && $autoincrementado>""$cadenaSQL .= ",\n   KEY $autoincrementado (" $autoincrementado ")";
    
$cadenaSQL .= "\n)ENGINE=InnoDB DEFAULT CHARSET=utf8; \n";
    
$manejadorDelFicheroDeLaCopia fopen($ficheroDeLaCopia,"a+b"); 
    
fwrite($manejadorDelFicheroDeLaCopia"# Tabla: ".$nombreDeTabla."\n\r".$cadenaSQL); 
    
fclose($manejadorDelFicheroDeLaCopia);

    unset(
$lineaDeDatos);

    if (
$nombreDeTabla>""){ //Si el nombre de la tabla es válido.
/* Se empieza recuperando todos los registros de la tabla. */
      
$hacerConsultaDeLecturaDeDatos=mysql_query("SELECT * FROM $nombreDeTabla"$conexion); 
      
$totalDeRegistrosmysql_num_rows ($hacerConsultaDeLecturaDeDatos); // Se obtiene el total de registros.
      
$totalDeCampos mysql_num_fields($hacerConsultaDeLecturaDeDatos); // Se onbtiene el total de campos.
/* Mediante un bucle se recorren todos los registros de la tabla. */
      
for ($cuentaDeRegistros=0;$cuentaDeRegistros<$totalDeRegistros;$cuentaDeRegistros++){
        
$matrizDeDatos=mysql_fetch_array($hacerConsultaDeLecturaDeDatos);
        
$lineaDeDatos.="INSERT INTO $nombreDeTabla ("//Se añade la sentencia SQL para incorporar un registro.
 /* Mediante un bucle se añaden los nombres de los campos. */
        
for ($cuentaDeCampos 0$cuentaDeCampos $totalDeCampos;$cuentaDeCampos++){
          
$nombreDeCampo mysql_field_name($hacerConsultaDeLecturaDeDatos$cuentaDeCampos); 
/* Si no es el último campo, se añade una coma y un espacio en blanco. */
          
if($cuentaDeCampos == ($totalDeCampos 1)){ 
            
$lineaDeDatos.= $nombreDeCampo
          } else { 
            
$lineaDeDatos.= $nombreDeCampo.",";
          }
        }
/* Formada la lista de campos, se añade la cláusula VALUES para incorporar los valores. */
        
$lineaDeDatos.=") VALUES (";
/* Mediante un bucle se añaden los valores, escapando los caracteres que sean necesarios. */
        
for ($cuentaDeCampos=0;$cuentaDeCampos $totalDeCampos;$cuentaDeCampos++){ 
          if(
$cuentaDeCampos == ($totalDeCampos 1)){ 
            
$lineaDeDatos.="'".addslashes($matrizDeDatos[$cuentaDeCampos])."'"
          } else { 
            
$lineaDeDatos.="'".addslashes($matrizDeDatos[$cuentaDeCampos])."',";
          }
/* Se añade un salto de línea, para pasar a la siguiente línea de datos */
        

        
$lineaDeDatos.= ");\n"
      } 
      
$lineaDeDatos.= "\n";
    }
/* Se incorpora la línea de datos al fichero de la consulta SQL. */
    
$manejadorDelFicheroDeLaCopia fopen($ficheroDeLaCopia,"a+b"); 
    
fwrite($manejadorDelFicheroDeLaCopia$lineaDeDatos); 
    
fclose($manejadorDelFicheroDeLaCopia);    
  } 
  #2 (permalink)  
Antiguo 03/11/2009, 02:22
 
Fecha de Ingreso: septiembre-2004
Mensajes: 324
Antigüedad: 19 años, 7 meses
Puntos: 13
Respuesta: Problema Modificar en Mysql Cuando Restauro en PHP

Aparece algun error?
  #3 (permalink)  
Antiguo 03/11/2009, 02:27
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años
Puntos: 1
Respuesta: Problema Modificar en Mysql Cuando Restauro en PHP

no, no me da ningun error. Lo hace bien, lo unico que luego cuando voy a Mysql, no me deja modificar desde dentro de MySQL.

nom e deja Editarlo vamos... Y no entiendo poruqe peude ser eso
  #4 (permalink)  
Antiguo 03/11/2009, 04:21
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años
Puntos: 1
Respuesta: Problema Modificar en Mysql Cuando Restauro en PHP

nadie sabe como resolver el tema? :S
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 03:34.