Foros del Web » Programando para Internet » PHP »

Ejecutar archivos sql desde la web

Estas en el tema de Ejecutar archivos sql desde la web en el foro de PHP en Foros del Web. Hola a todos!. Como digo siempre, mi proyecto es el servidor de un juego, esto requiere trabajo de multiples personas y para facilitar las cosas ...
  #1 (permalink)  
Antiguo 09/09/2015, 22:57
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Ejecutar archivos sql desde la web

Hola a todos!.

Como digo siempre, mi proyecto es el servidor de un juego, esto requiere trabajo de multiples personas y para facilitar las cosas siempre peinso en ¿Podria? y ¿Como?.

Esta vez estaba pensando como facilitarle a mi primo que enves de que el me pase archivos sql (para el juego) y yo luego insertarlos en la DDBB, que el mismo los inserte desde la web...

Bueno, primero de todo se me vino un metodo basico que es la insercion de datos mediante campo de texto, por ejemplo..
Código PHP:
<form action="" method="post">
<
textarea placeholder="Pega el codigo aqui"></textarea>
<
input type="submit" value="Ejecutar Codigo" name="items">
</
form
Asi de simple y con basic php logramos insertar el codigo a la base de datos y tabla que deseamos..

Bueno.. pero eso de pegar codigo es algo aburrido.. abrir los archivos copiar y pegar es algo cansador.

Asi que queria saber como podria hacerme mediante un boton de examinar
y agregar mas de un archivo a la vez si es posible.. pero ejecutando el archivo.sql y no el codigo.

Gracias de antemano
  #2 (permalink)  
Antiguo 10/09/2015, 01:57
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Ejecutar archivos sql desde la web

Eso es funcionalidad del navegador y se puede hacer con jQuery.js por ejemplo.
La parte de ejecutar cada uno de los archivos tienes que implementarla en PHP.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 10/09/2015, 06:14
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Respuesta: Ejecutar archivos sql desde la web

Lo puede hacer mas fácil, puedes crear en PHP un sistema de subir archivos, por ejemplo: archivo.sql, una vez subido que lo procese y le hagas un query.

Pero tienes que tener mucho cuidado en este tipo de cosas, ya que estarás abriendo una puerta trasera y la seguridad de la BBDD estará expuesta a ataques. Si lo quieres hacer asi, asesorate bien de crear un buen "anti-hacker"

Saludos.
__________________
Somos una serie de acontecimiento que puede venir al caso en un momento dado.
  #4 (permalink)  
Antiguo 10/09/2015, 12:21
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: Ejecutar archivos sql desde la web

Cita:
Iniciado por gogupe Ver Mensaje
Lo puede hacer mas fácil, puedes crear en PHP un sistema de subir archivos, por ejemplo: archivo.sql, una vez subido que lo procese y le hagas un query.

Pero tienes que tener mucho cuidado en este tipo de cosas, ya que estarás abriendo una puerta trasera y la seguridad de la BBDD estará expuesta a ataques. Si lo quieres hacer asi, asesorate bien de crear un buen "anti-hacker"

Saludos.
La verdad me estas matando en Jquery, como seria mas o menos su estructura de ejecucion?
Sabia que con Js podria conectar con la DB, pero la verdad nunca lo he aprendido a hacer.. ya que nunca pense que este momento llegaria :P
  #5 (permalink)  
Antiguo 10/09/2015, 12:38
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Ejecutar archivos sql desde la web

no dijo jquery dijo query, es decir una consulta a tu servidor desde php, la harías una vez tengas cargado el archivo, tendrias que crear el codigo para que este realice la query (consulta) y ejecute la sentencia en mysql para asi crear o ingresar los datos a tu base, claro gogupe tiene mucha razón, tendrias una puerta abierta que si alguien la encuentra te puede fregar toda tu base
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 10/09/2015, 19:11
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: Ejecutar archivos sql desde la web

Cita:
Iniciado por xfxstudios Ver Mensaje
no dijo jquery dijo query
Ha, lei mal.

pero como haria que ejecute una vez cargado?
Es decir, el archivo debe subirse a una carpeta en mi pc y luego ser ejecutado de alguna manera no?
O simplemente el archivo seleccionado se ejecuta automaticamente sin cargarse en alguna carpeta??
  #7 (permalink)  
Antiguo 11/09/2015, 00:00
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Respuesta: Ejecutar archivos sql desde la web

Te pongo un ejemplo que hice hace un tiempo. Se supone el archivo ya está subido en la carpeta /copia_bd

Asegurate que cada sentencia SQL termina en un punto y coma ";"

Código PHP:
$queries=explode(";",file_get_contents("/copia_bd/base_datos.sql"));

foreach(
$queries as $query)
    {
        if (
$query!="")
            {
                
mysqli_query($query,$link);
            }
    }

echo 
"La restauraci&oacute;n se ha realizado correctamente.";
@
unlink("/copia_bd/base_datos.sql"); 
__________________
Somos una serie de acontecimiento que puede venir al caso en un momento dado.
  #8 (permalink)  
Antiguo 11/09/2015, 05:42
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Ejecutar archivos sql desde la web

el codigo no es mio pero funciona bastante bien, lo que hace es leer un fichero sql que este en un directorio y crea la tabla o carga los datos en esta:

archivo 1:
Código PHP:
Ver original
  1. <?php
  2.  
  3. @include_once('phpMyImporter.php');
  4.  
  5. $dbhost = "localhost";
  6. $dbuser = "root";
  7. $dbpass = "";
  8. $dbname = "test";
  9.  
  10. $path      = "http://127.0.0.1/TEST/";
  11. $filename  = $path."test.sql"; // Filename of dump, default: dump.sql
  12. $compress  = false; // Import gz compressed file, default: false
  13.  
  14. $connection = @mysql_connect($dbhost,$dbuser,$dbpass);
  15. $dump = new phpMyImporter($dbname,$connection,$filename,$compress);
  16.  
  17. $dump->utf8 = true; // Uses UTF8 connection with MySQL server, default: true
  18.  
  19. $dump->doImport();
  20. ?>

librearia:
Código PHP:
Ver original
  1. <?php
  2.  
  3. class phpMyImporter {
  4.     /**
  5.     * @Acceso privado
  6.     */
  7.     var $database = null;
  8.     var $connection = null;
  9.     var $compress = null;
  10.     var $utf8 = null;
  11.  
  12.     var $importFilename = null;
  13.  
  14.  
  15.     function phpMyImporter($db=null, $connection=null, $filepath='test.sql', $compress=false) {
  16.         $this->connection = $connection;
  17.         $this->compress = $compress;
  18.         $this->importFilename = $filepath;
  19.  
  20.         $this->utf8 = true;
  21.  
  22.         return $this->setDatabase($db);
  23.     }
  24.  
  25.     /**
  26.     * Sets the database to work on
  27.     * @param string $db The database name
  28.     */
  29.     function setDatabase($db){
  30.         $this->database = $db;
  31.         if ( !@mysql_select_db($this->database) )
  32.             return false;
  33.         return true;
  34.     }
  35.    
  36.     /**
  37.     * Read from SQL file and make sql query
  38.     */
  39.     function importSql($file) {
  40.         // Reading SQL from file
  41.         echo "Leyendo instrucción SQL desde archivo '".$this->importFilename."':<br><br> ";
  42.         if ($this->compress) {
  43.             $lines = gzfile($file);
  44.         }
  45.         else {
  46.             $lines = file($file);
  47.         }
  48.         echo " Finalizada la Lectura!<br><br>\n";
  49.            
  50.         echo "Importando SQL dentro de tu base de datos '".$this->database."':<br><br> ";
  51.         $x = 0;
  52.         $importSql = "";
  53.         $procent = 0;
  54.         foreach ($lines as $line) {
  55.             // Print progress
  56.             $x++;
  57.             $numOfLines = count($lines);
  58.             if ($x%(int)($numOfLines/20) == 0) {
  59.                 $procent += 5;
  60.                 if ($procent%25 == 0) echo "$procent%";
  61.                 else echo ".";
  62.             }
  63.  
  64.             // Importing SQL
  65.             $importSql .= $line;
  66.             if ( substr(trim($line), strlen(trim($line))-1) == ";" ) {
  67.                 $query = @mysql_query($importSql, $this->connection);
  68.                 if (!$query) return false;
  69.                 $importSql = "";
  70.             }
  71.         }
  72.         return true;
  73.     }
  74.    
  75.     /**
  76.     * Import SQL file into selected database
  77.     */
  78.     function doImport() {      
  79.         if ( !$this->setDatabase($this->database) )
  80.             return false;
  81.  
  82.         if ( $this->utf8 ) {
  83.             $encoding = @mysql_query("SET NAMES 'utf8'", $this->connection);
  84.         }
  85.  
  86.         if ( $this->importFilename ) {
  87.             $import = $this->importSql($this->importFilename);
  88.             if (!$import) echo "\n".mysql_error($this->connection)."\n";
  89.             else echo "<br><br> Terminado, Archivo Importado!\n";
  90.             return $import;
  91.         }
  92.         else {
  93.             return false;
  94.         }
  95.     }
  96. }
  97. ?>
__________________
[email protected]
HITCEL

Etiquetas: sql, tabla
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 05:44.