Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/02/2011, 15:51
Avatar de Deathmetalrules
Deathmetalrules
 
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 15 años, 11 meses
Puntos: 8
Respuesta: crear archivo sql desde php

Código PHP:


<?php 
include("../conexion/conexion.php");
session_start();
if (isset(
$_SESSION['nombreusuario'])) 
    {
  
$conexion = mysql_connect($servername,$dbusername,$dbpassword) or die(mysql_error());
  @
mysql_select_db($dbname,$conexion);
  
$fechaDeLaCopia = "-".date("d l-F-Y");    
  
$ficheroDeLaCopia =$dbname.$fechaDeLaCopia.".sql";
  
$encabezamientoDeLaCopia = "# Copia de la base de datos creada el: ".date("d-m-Y")."\n# BBDD:$dbname \r\n";
  
$manejadorDelFicheroDeLaCopia = fopen($ficheroDeLaCopia,"a+b");
  
fwrite($manejadorDelFicheroDeLaCopia, $encabezamientoDeLaCopia); 
  
fclose($manejadorDelFicheroDeLaCopia);     
 

  
$matrizDeTablas = array();
  
$indiceDeLaMatrizDeTablas = 0;
  
$listadoDeTablas = mysql_list_tables($dbname);
  for(
$recorridoDeTablas=0; $recorridoDeTablas<mysql_num_rows($listadoDeTablas); $recorridoDeTablas++){     
    
$nombreDeTabla = mysql_tablename($listadoDeTablas,$recorridoDeTablas);
    if (
$nombreDeTabla <>"") {
      
$matrizDeTablas[$indiceDeLaMatrizDeTablas] = mysql_tablename($listadoDeTablas,$recorridoDeTablas);

      
$indiceDeLaMatrizDeTablas++;
    }
  }
  


  for (
$recorridoDeTablas = 0; $recorridoDeTablas < $indiceDeLaMatrizDeTablas; $recorridoDeTablas++){

    
$autoincrementado="";
    
$nombreDeTabla=$matrizDeTablas[$recorridoDeTablas];

    
$cadenaSQL = "";
    
$cadenaSQL .= "DROP TABLE IF EXISTS $nombreDeTabla; \n";
    
$cadenaSQL .= "CREATE TABLE $nombreDeTabla (\n";


    
$hacerConsultaDeLecturaDeEstructura = mysql_query("SHOW FIELDS FROM $nombreDeTabla",$conexion);

    while(
$row = mysql_fetch_array($hacerConsultaDeLecturaDeEstructura)) {
      
$cadenaSQL .= "    $row[Field] $row[Type]"; 
      if (
$row["Default"] != "") $cadenaSQL .= " DEFAULT '$row[Default]'"; 
      if (
$row["Null"] != "YES") $cadenaSQL .= " NOT NULL"; 
      if (
$row[Extra] != "") $cadenaSQL .= " $row[Extra]"; 
      if (
strstr (strtolower($row[Extra]),"auto_increment")) $autoincrementado=$row[Field];
      
$cadenaSQL .= ",\n"; 
    }


    
$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];
    }

    
$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); \n";

    
$manejadorDelFicheroDeLaCopia = fopen($ficheroDeLaCopia,"a+b"); 
    
fwrite($manejadorDelFicheroDeLaCopia, "# Tabla: ".$nombreDeTabla."\n\r".$cadenaSQL); 
    
fclose($manejadorDelFicheroDeLaCopia);



    unset(
$lineaDeDatos);

    if (
$nombreDeTabla>""){ 

      
$hacerConsultaDeLecturaDeDatos=mysql_query("SELECT * FROM $nombreDeTabla", $conexion); 
      
$totalDeRegistros= mysql_num_rows ($hacerConsultaDeLecturaDeDatos); 
      
$totalDeCampos = mysql_num_fields($hacerConsultaDeLecturaDeDatos); 

      for (
$cuentaDeRegistros=0;$cuentaDeRegistros<$totalDeRegistros;$cuentaDeRegistros++){
        
$matrizDeDatos=mysql_fetch_array($hacerConsultaDeLecturaDeDatos);
        
$lineaDeDatos.="INSERT INTO $nombreDeTabla ("; 
        for (
$cuentaDeCampos = 0; $cuentaDeCampos < $totalDeCampos;$cuentaDeCampos++){
          
$nombreDeCampo = mysql_field_name($hacerConsultaDeLecturaDeDatos, $cuentaDeCampos); 

          if(
$cuentaDeCampos == ($totalDeCampos - 1)){ 
            
$lineaDeDatos.= $nombreDeCampo; 
          } else { 
            
$lineaDeDatos.= $nombreDeCampo.",";
          }
        }

        
$lineaDeDatos.=") VALUES (";

        for (
$cuentaDeCampos=0;$cuentaDeCampos < $totalDeCampos;$cuentaDeCampos++){ 
          if(
$cuentaDeCampos == ($totalDeCampos - 1)){ 
            
$lineaDeDatos.="'".addslashes($matrizDeDatos[$cuentaDeCampos])."'"; 
          } else { 
            
$lineaDeDatos.="'".addslashes($matrizDeDatos[$cuentaDeCampos])."',";
          }

        } 
        
$lineaDeDatos.= ");\n"; 
      } 
      
$lineaDeDatos.= "\n";
    }

    
$manejadorDelFicheroDeLaCopia = fopen($ficheroDeLaCopia,"a+b"); 
    
fwrite($manejadorDelFicheroDeLaCopia, $lineaDeDatos); 
    
fclose($manejadorDelFicheroDeLaCopia);    
  }
  
header('Content-type: text/x-delimtext;');
  
header('Content-Disposition: attachment; filename="'.$ficheroDeLaCopia.'"');
  
readfile($ficheroDeLaCopia);
  
unlink ($ficheroDeLaCopia);
  
    }
else
    {
    echo 
'<div align="center">
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p> 
  <span>Área Restringuida </span>
    <p><img src="../imagen/acceso.png" /></p>
  </p>
    <span>Debe hacer clic en:</span>
  <span><a href="../index.php">Ingresar</a></span></div>'
;
}
?>

este es el codigo que yo utilizo para hacer un .sql y funciona a la perfeccion pruebalo y cualquier cosa segui escribiendo si necesitas ayuda agregame
[email protected]