Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/01/2004, 07:54
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ademas de lo que nenciona josemi .. Lo principal (para Mysql y en concreto la función de PHP mysql_query()) es que le separes las intrucciones SQL. En Msyql . una instrucción SQL está separa de la siguiente por el caracter ; (punto y coma) .. Los saltos de línea no son tan importantes (para Msyql) . pero .. si que lo son si vas a leer ese archivo con file() ...

Lo ideal es leer el archivo con file() pero concatenando sus elementos del array que se entrega para generar un string (cadena) y a partir de ahí aplicar el explode() al caracter ; para obtener realmente un array con las sentencias SQL exactas (independiente si estas a su vez incluyen saltos de línea).

Sería algo así:

Código PHP:
<?
// Leer el archivo .sql ..
$archivo_sql="nose.sql";
// concatenarlo hacia un string (cadena)
$sql implode(''file ($archivo_sql)); 
// Separa en un array a 1 elemento del array por instrucción SQL
$sql_instrucciones=explode(";",$sql);

// Conectas a tu BD . .selecciona la BD .. etc ...
// Y la consulta SQL (ejecución .. instrucción por instrucción .. mysql_query() no acepta/ejecuta mas de una a la vez).
foreach ($sql_instrucciones as $sql_instruc){
    
mysql_query($sql_instruc);
}
?>
Si tu "sql" llega desde un formulario en un campo TEXTAREA .. la técnica es igual (eliminando la parte del implode() del file()) .. No hace falta (y no debes) usar nl2br() para procesar esas isntrucciones .. en un texarea se generan saltos de línea \n (los mismo que contiene un archivo de texto plano).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 14/01/2004 a las 07:58