<?

// ------------------------------------------------------------------------- //
// Exécuter un fichier de requêtes SQL pour mettre à jour une base           //
// ------------------------------------------------------------------------- //
// Auteur: Perrich                                                           //
// Email:  perrich@netsolution.fr                                            //
// Web: http://www.frshop.net/                                               //
// ------------------------------------------------------------------------- //

$con = mysql_connect( 'localhost', $dbUser, $dbPass );
mysql_select_db( $dbDestination, $con );

$sql_file = "monfichier.sql"; // a redefinir

set_time_limit(0);

function
split_sql($sql) {

  
$sql = trim($sql);
  
$sql = ereg_replace("\n#[^\n]*\n", "", $sql);
  
$buffer = array();
  
$ret = array();
  
$in_string = false;

  for(
$i = 0; $i < strlen( $sql ) - 1; $i++) {
    if (
$in_string ) {
      if ( (
$sql[$i] == $in_string ) && ( $buffer[1] != "\\" ) )
        
$in_string = false;
    } else {
      if (
$sql[$i] == ";" ) {
        
$ret[] = substr( $sql, 0, $i );
        
$sql = substr( $sql, $i + 1 );
        
$i = 0;
      }
      if ( (
$sql[$i] == "\"" || $sql[$i] == "'" ) &&
           ( !isset(
$buffer[1] ) || $buffer[1] != "\\" ) ) $in_string = $sql[$i];
    }
    
$buffer[1] = $sql[$i]; // caractère precédent
  
}

  if ( !empty(
$sql ) ) $ret[] = $sql;

  return(
$ret);

}

if ( isset(
$sql_file ) ) {

  echo
"Insertion des données dans la base de données ... ";

  
$sql_query = fread( fopen( $sql_file, "r" ), filesize( $sql_file ));
  
$pieces = split_sql( $sql_query );
  for (
$i = 0; $i < count( $pieces ); $i++ ) {
    
$pieces[$i] = trim( $pieces[$i] );
    if ( !empty(
$pieces[$i] ) && $pieces[$i] != "#" )
      
$result = mysql_query( $pieces[$i], $con )
                or die(
'erreur ligne '.($i+1).' &nsbp; '.$pieces[$i].'<br>' );
  }
  echo
"<b>OK</b><br> <br>";

}

?>