Вход Регистрация
Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/ips_kernel/db_lib/mysql_tools.php
Строк: 525
<?php

/**
 * @file        mysql_tools.php     Provides methods to diagnostic a MySQL database
 *~TERABYTE_DOC_READY~
 * $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
 * $License: http://www.invisionpower.com/company/standards.php#license$
 * $Author: AndyMillne $
 * @since        Tuesday 1st March 2005 15:40
 * $LastChangedDate: 2013-05-07 11:14:15 -0400 (Tue, 07 May 2013) $
 * @version        v3.4.6
 * $Revision: 12235 $
 */

/**
 *
 * @class        db_tools
 * @brief        Provides methods to diagnostic a MySQL database
 * @note        The file is automatically loaded based on the driver value in conf_global.php
 *
 */
class db_tools
{
    
/**
     * Boolean flag that holds data about missing column/table/index
     *
     * @var        bool
     */
    
public $has_issues    false;
    
    
/**
     * Array with an internal mapping of tables/columns
     *
     * @var        array
     */
    
protected $_mapping    = array();

    
/**
     * Diagnose table indexes
     *
     * @param    array     $sql_statements        Array of create table/index statements to check
     * @param    string     $issues_to_fix        String of the issue to fix, can be set to 'all' to fix everything
     * @return    @e array
     *
     * <b>Example Usage:</b>
     * @code
     * // Retrieve results
     * $results = $this->dbIndexDiag( $sql_statements );
     * // Retrieve results and fix a index
     * $results = $this->dbIndexDiag( $sql_statements, $issues_to_fix );
     * // Retrieve results and fix all indexes
     * $results = $this->dbIndexDiag( $sql_statements, 'all' );
     * @endcode
     */
    
public function dbIndexDiag$sql_statements$issues_to_fix='' )
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------
        
        
$indexes         = array();
        
$error_count     0;
        
$output            = array();

        
//-----------------------------------------
        // Do we have SQL statements?
        //-----------------------------------------
        
        
if( is_array($sql_statements) && count($sql_statements) )
        {
            
//-----------------------------------------
            // Loop over our statements
            //-----------------------------------------
            
            
foreach( $sql_statements as $definition )
            {
                
//-----------------------------------------
                // Some more per-statement init
                //-----------------------------------------
                
                
$table_name        "";
                
$fields_str        "";
                
$primary_key    "";
                
$tablename        = array();
                
$fields            = array();
                
$final_keys        = array();
                
$col_definition    "";
                
$colmatch        = array();
                
$final_primary    = array();
                
                
/* Remove backticks */
                
$definition $this->_sqlStripTicks$definition );
                
                
$definition    preg_replace"#CREATEs+TABLEs+IFs+NOTs+EXISTSs+#i""CREATE TABLE "$definition );

                
//-----------------------------------------
                // Is this a create table statement?
                //-----------------------------------------

                
if ( preg_match"#CREATEs+TABLEs+?(.+?)s+?(#ie"$definition$tablename ) )
                {
                    
$tableName    $tablename[1];
                    
                    
//-----------------------------------------
                    // Does the table have a primary key?
                    //-----------------------------------------
                    
                    
if ( preg_match"#s+?PRIMARYs+?KEYs+?(?:(w+?)s*)?((.*?))(?:(?:[,s+?$])?((.+?)))?#is"$definition$fields ) )
                    {
                        
$final_primary    = array();

                        
//-----------------------------------------
                        // Did we find anything with our regex?
                        //-----------------------------------------
                        
                        
if( count$fields ) )
                        {
                            
//-----------------------------------------
                            // Get the actual key name
                            //-----------------------------------------
                            
                            
$primary_key    trim($fields[1]);
                            
$primary_fields    implode","array_map'trim'explode","$fields[2] ) ) );

                            
//-----------------------------------------
                            // Get the table definition
                            //-----------------------------------------
                            
                            
$col_definition $this->_sqlStripTicks$definition );

                            
//-----------------------------------------
                            // This is the primary key for this table
                            //-----------------------------------------
                            
                            
$final_primary = array( $primary_key $primary_key $primary_fields$primary_fields );
                        }
                    }
                }

                
//-----------------------------------------
                // Now find all non-primary keys
                //-----------------------------------------

                
if ( preg_match_all"#s+?(UNIQUE KEY|KEY|INDEX|UNIQUE)s+?(?:(w+?)s+?)?(s*(.+?)s*)(?:s+using (?:btree|hash))?(n|,n)#is"$definition$fields ) )
                {
                    
//-----------------------------------------
                    // We got some fields!
                    //-----------------------------------------

                    
if( count$fields[3] ) )
                    {
                        
$i 0;
                        
                        
//-----------------------------------------
                        // Loop over the data from the preg statement
                        //-----------------------------------------
                        
                        
foreach( $fields[3] as $index_cols )
                        {
                            
//-----------------------------------------
                            // Get index name, column name, and store
                            //-----------------------------------------
                            
                            //$index_cols        = implode( ",", array_map( 'trim', explode( ",", $this->_sqlStripTicks( preg_replace( "#(([^(]+?))#", "", $index_cols ) ) ) ) );
                            
$index_cols        implode","array_map'trim'explode","$this->_sqlStripTicks$index_cols ) ) ) );
                            
                            
$index_name        $fields[2][$i] ? $fields[2][$i] : $index_cols;

                            if( 
$index_cols != $final_primary[1] )
                            {
                                
$final_keys[]    = array( $index_name$index_colsin_arraystrtolower($fields[1][$i]), array( 'unique key''unique' ) ) ? true false );
                            }
                            
                            
$i++;
                        }
                    }
                }

                
//-----------------------------------------
                // We have some indexes for this table
                //-----------------------------------------
                                
                
if( $tableName AND ( $primary_key OR count($final_keys) ) )
                { 
                    
$indexes[] = array( 'table'     => $tableName,
                                        
'primary'    => $final_primary,
                                        
'index'        => $final_keys,
                                      );
                }
            }
        }

        
//-----------------------------------------
        // No indexes on this table
        //-----------------------------------------
        
        
if( !count($indexes) )
        {
           return 
false
        }

        
//-----------------------------------------
        // Loop over the indexes
        //-----------------------------------------

        
foreach( $indexes as $data )
        {
            
//-----------------------------------------
            // Get table schematics and clean it
            //-----------------------------------------
            
            
$row ipsRegistry::DB()->getTableSchematic$data['table'] );
            
$tbl $this->_sqlStripTicks$row['Create Table'] );
            
            
$tbl preg_replace"#(USING BTREE|USING HASH)#i"""$tbl );
            
            
//-----------------------------------------
            // Start output (one per index)
            //-----------------------------------------

            
$output$data['table'] ]    = array( 'table'        => ipsRegistry::$settings['sql_tbl_prefix'].$data['table'],
                                                 
'status'        => 'ok',
                                                 
'missing'        => array(),
                                                );
            
            
//-----------------------------------------
            // We had a primary key, so let's look for it
            //-----------------------------------------
            
            
if( isset( $data['primary'] ) && is_array($data['primary']) AND count($data['primary']) )
            {
                
$index_name preg_replace"/[^a-zA-Z0-9]/"'_'$data['primary'][0] );
                
$index_cols    $data['primary'][1];
                
$ok            0;

                
//-----------------------------------------
                // Can we find it...?
                //-----------------------------------------
                
                
if ( preg_match"#s*PRIMARYs+?KEYs*((([^)]+?)))?#is"$tbl$matches ) )
                {
                    
$ok 1;
                    
                    if ( 
$matches[2] )
                    {
                        
/* strip out white space so that def: key, key matches $index_cols which is always key,key */
                        
$matches[2] = str_replace' '''$matches[2] );
                    }
                    
                    
//-----------------------------------------
                    // It is...now is the index right (mulicolumn)?
                    //-----------------------------------------

                    
if ( $index_cols != $matches[2] )
                    {
                        
//-----------------------------------------
                        // Break out the real indexes and loop
                        //-----------------------------------------

                        
foreach( explode','$index_cols ) as $mc )
                        {
                            
//-----------------------------------------
                            // And make sure it's in the definition
                            //-----------------------------------------
                            
                            
if ( strpos$match[2], $mc ) === false )
                            {
                                
$query_needed    'ALTER TABLE ' ipsRegistry::$settings['sql_tbl_prefix'] . $data['table'] . ' DROP INDEX ' $index_name ', ADD INDEX ' $index_name ' (' $index_cols ')';

                                
//-----------------------------------------
                                // Are we fixing now?
                                //-----------------------------------------
                                
                                
if( preg_replace'#^' ipsRegistry::$settings['sql_tbl_prefix'] . '(.+?)#'"\1"$issues_to_fix ) == $data['table'] OR $issues_to_fix == 'all' )
                                {
                                    
$r ipsRegistry::DB()->query$query_needed );
                                    
$output['ran'][] = array( 'q' => $query_needed'status' => $r );
                                    
                                    break;
                                }
                                
                                
//-----------------------------------------
                                // We got issues gomer!
                                //-----------------------------------------
                                
                                
$this->has_issues 1;

                                
$output$data['table'] ]['status']        = 'error';
                                
$output$data['table'] ]['index'][]    = $index_name;
                                
$output$data['table'] ]['missing'][]    = $index_name;
                                
$output$data['table'] ]['fixsql'][]    = $query_needed;

                                
$ok       0;
                                
                                break;
                            }
                        }
                    }
                }
                else
                {
                    
//-----------------------------------------
                    // Generate query and set the output array
                    //-----------------------------------------
                    
                    
$query_needed "ALTER TABLE " ipsRegistry::$settings['sql_tbl_prefix'] . "{$data['table']} ADD PRIMARY KEY ({$index_name})";

                    
//-----------------------------------------
                    // Are we fixing now?
                    //-----------------------------------------
                    
                    
if( preg_replace'#^' ipsRegistry::$settings['sql_tbl_prefix'] . '(.+?)#'"\1"$issues_to_fix ) == $data['table'] OR $issues_to_fix == 'all' )
                    {
                        
$ok    1;

                        
$r ipsRegistry::DB()->query$query_needed );
                        
$output['ran'][] = array( 'q' => $query_needed'status' => $r );
                    }
                    else
                    {
                        
$this->has_issues 1;
                        
                        
$output$data['table'] ]['status']        = 'error';
                        
$output$data['table'] ]['index'][]    = $index_name;
                        
$output$data['table'] ]['missing'][]    = $index_name;
                        
$output$data['table'] ]['fixsql'][]    = $query_needed;
    
                        
$error_count++;
                    }
                }
                
                
//-----------------------------------------
                // Primary key is fine
                //-----------------------------------------
                
                
if( $ok )
                {
                    
$output$data['table'] ]['index'][]    = $index_name;
                }
            }

            
//-----------------------------------------
            // Got other indexes?
            //-----------------------------------------
            
            
if ( isset( $data['index'] ) && is_array$data['index'] ) and count$data['index'] ) )
            {
                
//-----------------------------------------
                // Loop over the other indexes
                //-----------------------------------------
                
                
foreach( $data['index'] as $indexes )
                {
                    
$index_name    $indexes[0];
                    
$_checkName    $index_name;
                    
$index_cols    str_replace' '''$indexes[1] ? $indexes[1] : $index_name );
                    
$index_name    preg_replace"/[^a-zA-Z0-9]/"'_'$index_name );

                    
$ok            0;

                    
/* MySql seems to name multi-column indexes by the first field name regardless of what KEY NAME you specify. I know, nice isn't it. */
                    
if ( strstr$index_cols',' ) AND ! preg_match"#ns*?(?:UNIQUE KEY|KEY|INDEX|UNIQUE)s+?{$_checkName}s+?((s*(.+?)s*))(?:s+using (?:btree|hash))?(s|,s)#is"$tbl$match ) )
                    {
                        list( 
$_checkName, ) = explode','$index_cols );
                        
                        
/* Now remove the xxxx(int) if it's there */
                        
if ( strstr$_checkName'(' ) )
                        {
                            
$_checkName preg_replace"#^(.*)(([^)]+?))#""\1"$_checkName );
                        }
                    }
                    
                    
//-----------------------------------------
                    // Is the key there?
                    //-----------------------------------------
                    
                    
if ( preg_match"#ns*?(?:UNIQUE KEY|KEY|INDEX|UNIQUE)s+?{$_checkName}s+?((s*(.+?)s*))(?:s+using (?:btree|hash))?(s|,s)#is"$tbl$match ) )
                    {
                        
$ok    1;
                        
                        if ( 
$match[2] )
                        {
                            
/* strip out white space so that def: key, key matches $index_cols which is always key,key */
                            
$match[2] = str_replace' '''$match[2] );
                        }
                    
                        
//-----------------------------------------
                        // It is...now is the index right (mulicolumn)?
                        //-----------------------------------------
        
                        
if ( $index_cols != $match[2] )
                        {
                            
//-----------------------------------------
                            // Break out the real indexes and loop
                            //-----------------------------------------
                            
                            
foreach( explode','$indexes[1] ) as $mc )
                            {
                                
//-----------------------------------------
                                // And make sure it's in the definition
                                //-----------------------------------------
                                
                                
if ( strpos$match[2], str_replace(' '''$mc) ) === false )
                                {
                                    
$_indexType    $indexes[2] ? "UNIQUE KEY" "INDEX";
                                    
                                    
$query_needed    'ALTER TABLE ' ipsRegistry::$settings['sql_tbl_prefix'] . $data['table'] . ' DROP INDEX ' $index_name ', ADD ' $_indexType ' ' $index_name ' (' $index_cols ')';

                                    
//-----------------------------------------
                                    // Are we fixing now?
                                    //-----------------------------------------
                                    
                                    
if( preg_replace'#^' ipsRegistry::$settings['sql_tbl_prefix'] . '(.+?)#'"\1"$issues_to_fix ) == $data['table'] OR $issues_to_fix == 'all' )
                                    {
                                        
$r ipsRegistry::DB()->query$query_needed );
                                        
$output['ran'][] = array( 'q' => $query_needed'status' => $r );
                                        
                                        continue 
2;
                                    }

                                    
$this->has_issues 1;

                                    
$output$data['table'] ]['status']        = 'error';
                                    
$output$data['table'] ]['index'][]    = $index_name;
                                    
$output$data['table'] ]['missing'][]    = $index_name;
                                    
$output$data['table'] ]['fixsql'][]    = $query_needed;

                                    
$ok       0;
                                    
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        
//-----------------------------------------
                        // Generate query and set the output array
                        //-----------------------------------------
                        
                        
$_indexType    $indexes[2] ? "UNIQUE KEY" "INDEX";
                        
                        
$query_needed 'ALTER TABLE ' ipsRegistry::$settings['sql_tbl_prefix'] . $data['table'] . ' ADD ' $_indexType ' ' $index_name ' (' $index_cols ')';

                        
//-----------------------------------------
                        // Are we fixing now?
                        //-----------------------------------------
                        
                        
if( preg_replace'#^' ipsRegistry::$settings['sql_tbl_prefix'] . '(.+?)#'"\1"$issues_to_fix ) == $data['table'] OR $issues_to_fix == 'all' )
                        {
                            
$r ipsRegistry::DB()->query$query_needed );
                            
$output['ran'][] = array( 'q' => $query_needed'status' => $r );
                            
                            
$ok    1;
                        }
                        else
                        {
                            
$output$data['table'] ]['status']        = 'error';
                            
$output$data['table'] ]['index'][]    = $index_name;
                            
$output$data['table'] ]['missing'][]    = $index_name;
                            
$output$data['table'] ]['fixsql'][]    = $query_needed;
    
                            
$error_count++;
                        }
                    }

                    
//-----------------------------------------
                    // The index is ok
                    //-----------------------------------------
                    
                    
if ( $ok )
                    {
                        
$output$data['table'] ]['index'][]    = $index_name;
                    }
                }
            }
        }
        
        return array( 
'error_count'    => $error_count'results' => $output );
    }


    
/**
     * Diagnose table structure
     *
     * @param    array     $sql_statements        Array of create table/columns statements to check
     * @param    string     $issues_to_fix        String of the issue to fix, can be set to 'all' to fix everything
     * @return    @e array
     *
     * <b>Example Usage:</b>
     * @code
     * // Retrieve results
     * $results = $this->dbTableDiag( $sql_statements );
     * // Retrieve results and fix a table/column
     * $results = $this->dbTableDiag( $sql_statements, $issues_to_fix );
     * // Retrieve results and fix all tables/columns
     * $results = $this->dbTableDiag( $sql_statements, 'all' );
     * @endcode
     */
    
public function dbTableDiag$sql_statements$issues_to_fix='' )
    {
        
//-----------------------------------------
        // Init
        //-----------------------------------------
                        
        
$queries_needed        = array();
        
$tables_needed        = array();
        
$table_definitions    = array();
        
$error_count        0;
        
$_tablesFull        = array();
        
$_tablesAlter        = array();

        
//-----------------------------------------
        // Do we have any statements?
        //-----------------------------------------
        
        
if( is_array$sql_statements ) && count$sql_statements ) )
        {
            
//-----------------------------------------
            // Loop over those statements
            //-----------------------------------------
            
            
foreach( $sql_statements as $the_table )
            {
                
$expected_columns    = array();
                
$missing_columns    = array();
                
                
/* Remove backticks */
                
$the_table $this->_sqlStripTicks$the_table );
                
                
$the_table    preg_replace"#CREATEs+TABLEs+IFs+NOTs+EXISTSs+#i""CREATE TABLE "$the_table );

                
//-----------------------------------------
                // Is this a create table statement?
                //-----------------------------------------
                
                
if( preg_match"#CREATEs+TABLEs+?(.+?)s+?(#ie"$the_table$definition ) )
                {
                    
$tableName    ipsRegistry::$settings['sql_tbl_prefix'] . $definition[1];
                    
                    
//-----------------------------------------
                    // Store the entire table definition
                    //-----------------------------------------
                    
                    
$table_definitions$tableName ] = str_replace$definition[1], $tableName$the_table );
                    
$_tablesFull[]    = $tableName;
                    
                    
//-----------------------------------------
                    // Get the columns
                    //-----------------------------------------
                    
                    
$columns_array explode"n"$the_table );

                    
//-----------------------------------------
                    // Get rid of first row ("CREATE TABLE ...")
                    //-----------------------------------------
                    
                    
array_shift($columns_array);
                    
                    
//-----------------------------------------
                    // Get rid of the junk at the end of each line
                    //-----------------------------------------
                    
                    
if ( ( strpos(end($columns_array), ");") === ) OR 
                         ( 
strpos(end($columns_array), ")") === )  OR
                         ( 
strpos(end($columns_array), ";") === ) )
                    {
                        
array_pop($columns_array);
                    }

                    
reset($columns_array);
                    
                    
//-----------------------------------------
                    // Loop over each supposed "column"
                    //-----------------------------------------
                    
                    
foreach( $columns_array as $col )
                    {
                        
//-----------------------------------------
                        // Find the column name
                        //-----------------------------------------
                        
                        
$temp        preg_split"/[s]+/" trim($col) );
                        
$columnName    $temp[0];
                        
                        
//-----------------------------------------
                        // Ignore custom profile fields
                        // @link    http://community.invisionpower.com/tracker/issue-27495-database-checker-find-removed-custom-profile-fields
                        //-----------------------------------------
                        
                        
if( $tableName == 'pfields_content' AND strpos$columnName'field_' ) === )
                        {
                            continue;
                        }

                        
//-----------------------------------------
                        // If this is a real column, map it
                        //-----------------------------------------
                        
                        
if( !in_array$columnName, array( "PRIMARY""KEY""INDEX""UNIQUE""""("";"");" ) ) )
                        {
                            
$expected_columns[]                                = $columnName;
                            
$this->_mapping$tableName ][ $columnName ]    = trimstr_replace','';'$col ) );
                        }
                    }
                }
                
                
//-----------------------------------------
                // This an alter table statement?
                //-----------------------------------------
                
                
elseif ( preg_match"#ALTERs+TABLEs+([a-z_]*)s+ADDs+([a-z_]*)s+#is"$the_table$definition ) )
                {
                    
//-----------------------------------------
                    // If this is truly adding a new column, map it
                    //-----------------------------------------

                    
if( $definition[1] AND $definition[2] AND $definition[2] != 'INDEX' AND strpos($definition[2], 'TYPE') === false AND strpos($definition[2], 'ENGINE') === false )
                    {
                        
$tableName    ipsRegistry::$settings['sql_tbl_prefix'] . trim$definition[1] );
                        
$columnName    trim($definition[2]);
                        
$_tablesAlter[]    = $tableName;

                        
$expected_columns[]                                = $columnName;
                        
$this->_mapping$tableName ][ $columnName ]    = $definition[2] . ' ' str_replace$definition[0], ''$the_table ) . ";";
                    }
                }
                
                
//-----------------------------------------
                // We don't care about any other queries
                //-----------------------------------------
                
                
else
                {
                    continue;
                }

                
//-----------------------------------------
                // Don't die on me sarge!
                //-----------------------------------------
                
                
ipsRegistry::DB()->return_die 1;
                
                
$tableNoPrefix    preg_replace'#^' ipsRegistry::$settings['sql_tbl_prefix'] . '(.+?)#'"\1"$tableName );

                
//-----------------------------------------
                // If table is missing entirely, we need to build it
                //-----------------------------------------
                
                
if ( ! ipsRegistry::DB()->checkForTable$tableNoPrefix ) )
                {
                    
//-----------------------------------------
                    // Are we fixing now?
                    //-----------------------------------------
                    
                    
if( preg_replace'#^' ipsRegistry::$settings['sql_tbl_prefix'] . '(.+?)#'"\1"$issues_to_fix ) == $tableNoPrefix OR $issues_to_fix == 'all' )
                    {
                        if ( 
ipsRegistry::$settings['sql_tbl_prefix'] )
                        {
                            
$the_table preg_replace"#^CREATE TABLE(?:s+?)?(S+)#is""CREATE TABLE "  ipsRegistry::$settings['sql_tbl_prefix'] ."\1 "$the_table );
                        }
                        
                        
$r ipsRegistry::DB()->query$the_table );
                        
$output['ran'][] = array( 'q' => $the_table'status' => $r );
                        
                        continue;
                    }

                    
$output$tableName ]    = array( 'key'        => $tableNoPrefix,
                                                     
'table'    => $tableName,
                                                     
'status'    => 'error_table',
                                                     
'fixsql'    => array( $table_definitions$tableName ] )
                                                    );

                    
//-----------------------------------------
                    // Increment error counter
                    //-----------------------------------------
                    
                    
$error_count++;
                    
                    
//-----------------------------------------
                    // Reset failed status
                    //-----------------------------------------
                    
                    
ipsRegistry::DB()->failed 0;
                }
                
                
//-----------------------------------------
                // Table exists...
                //-----------------------------------------
                
                
else
                {
                    
//-----------------------------------------
                    // Loop over all the columns
                    //-----------------------------------------

                    
foreach( $expected_columns as $trymeout )
                    {
                        
//-----------------------------------------
                        // Does column exist?
                        //-----------------------------------------
                        
                        
if( ! ipsRegistry::DB()->checkForField$trymeout$tableNoPrefix ) )
                        {
                            
//-----------------------------------------
                            // Missing - create "ALTER TABLE" query
                            //-----------------------------------------
                            
                            
$query_needed        "ALTER TABLE " $tableName " ADD " $this->_mapping$tableName ][ $trymeout ];

                            
//-----------------------------------------
                            // If this is an autoincrement column, we need
                            // to add the primary key, since it won't exist
                            //-----------------------------------------
                            
                            
if( strpos$query_needed"auto_increment;" ) !== false )
                            {
                                
//-----------------------------------------
                                // Cut off the ";", add primary key bit
                                //-----------------------------------------
                                
                                
$query_needed substr$query_needed0, -).", ADD PRIMARY KEY( "$trymeout ");";
                            }

                            
//-----------------------------------------
                            // Are we fixing now?
                            //-----------------------------------------
                            
                            
if( preg_replace'#^' ipsRegistry::$settings['sql_tbl_prefix'] . '(.+?)#'"\1"$issues_to_fix ) == $tableNoPrefix OR $issues_to_fix == 'all' )
                            {
                                
$r ipsRegistry::DB()->query$query_needed );
                                
$output['ran'][] = array( 'q' => $query_needed'status' => $r );
                                continue;
                            }
                            
                            
$missing_columns[]    = $trymeout;

                            
//-----------------------------------------
                            // We only do this once
                            //-----------------------------------------
                            
                            
if( !isset($output$tableName ]) OR !count($output$tableName ]) )
                            {
                                
$output$tableName ]    = array( 'key'        => $tableNoPrefix,
                                                                 
'table'    => $tableName,
                                                                 
'status'    => 'error_column',
                                                                );
                            }

                            
//-----------------------------------------
                            // But with each error, add the query
                            //-----------------------------------------
                            
                            
$output$tableName ]['fixsql'][]    = $query_needed;
                            
                            
//-----------------------------------------
                            // Increment error count
                            //-----------------------------------------
                            
                            
$error_count++;
                        }
                    }

                    
//-----------------------------------------
                    // If nothing was wrong, show ok message
                    //-----------------------------------------
                    
                    
if( !count$missing_columns ) )
                    {
                        
$output[] = array( 'key'        => $tableNoPrefix,
                                           
'table'        => $tableName,
                                           
'column'        => in_array$tableName$_tablesFull ) ? '' $trymeout,
                                           
'status'        => 'ok',
                                           
'fixsql'        => '' );
                    }
                }
            }
        }
        
        return array( 
'error_count'    => $error_count'results' => $output );
    }
    
    
/**
     * Remove ticks and double quotes from statement
     *
     * @param    string     $data        String to clean
     * @return    @e string
     *
     * <b>Example Usage:</b>
     * @code
     * $query = $this->_sqlStripTicks( $data );
     * @endcode
     */
    
protected function _sqlStripTicks$data )
    {
        
$data str_replace'`'''$data );
        
$data str_replace'"'''$data );
        
        return 
$data;
    }
}
Онлайн: 0
Реклама