sql >> Base de Datos >  >> RDS >> Mysql

Bucle a través de la base de datos mysql

Algo de código en bruto. No depurado o probado...

$masterDBHost = 'localhost';
$masterDBUser = 'username';
$masterDBPass = 'somethingSecret';
$masterDBName = 'theDBname';

$sqlToPerformOnEachDatabases = 'SELECT 1';

// Connect to the Master Database
if( !( $master = mysql_connect( $masterDBHost , $masterDBUser , $masterDBPass ) ) )
  die( 'MySQL Error - Cannot Connect to Master Server' );
if( !mysql_select_db( $masterDBName , $master ) )
  die( 'MySQL Error - Cannot Connect to Master Database' );

// Get the Other Databases to Connect to
$databases = mysql_query( 'SELECT * FROM `databaseTable`' , $master );

// Check your Results
if( !$databases || mysql_num_rows( $databases )==0 ){
  # Nothing to work with
  echo 'Unable to find Databases to Access';
}else{
  # Something to work with
  while( $d = mysql_fetch_assoc( $databases ) ){
    // Connect to the Client Server
    if( !( $temp = mysql_connect( $d['host'] , $d['user'] , $d['pass'] ) ) ){
      # Can't connect to the Server
      echo 'MySQL Error - Failed to connect to '.$d['host'].' as '.$d['user'];
    }elseif( !mysql_select_db( $d['base'] , $temp ) ){
      # Can't connect to the Database
      echo 'MySQL Error - Failed to connect to '.$d['base'].' on '.$d['host'].' as '.$d['user'];
    }elseif( !mysql_query( $sqlToPerformOnEachDatabases , $temp ) ){
      # Your Command, well, stuffed up
      echo 'MySQL Error - Your Command Stuffed Up';
    }else{
      # Your Command worked OK
      echo 'All Good!';
    }
    # Close the connection (probably not needed, but nice to do)
    @mysql_close( $temp );
  }
}

Versión 2

Permite mantener una conexión si se usa el mismo host/usuario/pase

De nuevo, no depurado ni probado.

$masterDBHost = 'localhost';
$masterDBUser = 'username';
$masterDBPass = 'somethingSecret';
$masterDBName = 'theDBname';

$sqlToPerformOnEachDatabases = 'SELECT 1';

// Connect to the Master Database
if( !( $master = mysql_connect( $masterDBHost , $masterDBUser , $masterDBPass ) ) )
  die( 'MySQL Error - Cannot Connect to Master Server' );
if( !mysql_select_db( $masterDBName , $master ) )
  die( 'MySQL Error - Cannot Connect to Master Database' );

// Get the Other Databases to Connect to
$databases = mysql_query( 'SELECT * FROM `databaseTable`' , $master );

// Check your Results
if( !$databases || mysql_num_rows( $databases )==0 ){
  # Nothing to work with
  echo 'Unable to find Databases to Access';
}else{
  # Something to work with
  // A variable for the MySQL Connection
  $temp = false;
  // Declare some short-term memory
  $last = array();
  while( $d = mysql_fetch_assoc( $databases ) ){
    // Check Last Loop's details
    if( $temp
        && $last
        && array_diff( $last , $d ) ){
      // New Host, User or Pass
      @mysql_close( $temp );
      $last = false;
    }
    // Connect to the Client Server
    if( !$last
        && !( $temp = mysql_connect( $d['host'] , $d['user'] , $d['pass'] ) ) ){
      # Can't connect to the Server
      echo 'MySQL Error - Failed to connect to '.$d['host'].' as '.$d['user'];
    }elseif( !mysql_select_db( $d['base'] , $temp ) ){
      # Can't connect to the Database
      echo 'MySQL Error - Failed to connect to '.$d['base'].' on '.$d['host'].' as '.$d['user'];
    }elseif( !mysql_query( $sqlToPerformOnEachDatabases , $temp ) ){
      # Your Command, well, stuffed up
      echo 'MySQL Error - Your Command Stuffed Up';
    }else{
      # Your Command worked OK
      echo 'All Good!';
    }
    # Remember this Loop's details
    $last = $d;
  }
  @mysql_close( $temp );
}