Looping through mysql database

后端 未结 3 1943
慢半拍i
慢半拍i 2021-01-27 20:32

I have series of mysql databases on my server. The names of these databases are stored in a separate database table (users) - column(dbname) . I want to loop through table (user

3条回答
  •  执笔经年
    2021-01-27 20:44

    Some rough code. Not debugged or tested...

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

    Version 2

    Allows for keeping a connection if the same Host/User/Pass is used

    Again, not debugged or tested.

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

提交回复
热议问题