Как создать статическую функцию создания таблицы php? - PullRequest
0 голосов
/ 18 мая 2018

Я создал статическую функцию создания таблицы и вставки, но я не знаю, как использовать их для разных баз данных.примеры:

        static public function createTableA($TABLE,$DATA) 
        {       
            $conn=self::getConnectionA();           
            $SQL="CREATE TABLE {$TABLE}"; 
            $SQL.=" (";
            foreach($DATA as$key) 
            {
                $SQL.=$key.","; 
            }           
            $SQL=rtrim($SQL,","); 
            $SQL.= ") ";            
            $result=$conn->query($SQL); 
            if(!($result)) 
            {
                return false; 
            } 
            else 
            {
                return true; 
            }           
            mysqli_close($conn);            
        }
        static public function createTableB($TABLE,$DATA) 
        {       
            $conn=self::getConnectionB();           
            $SQL="CREATE TABLE {$TABLE}"; 
            $SQL.=" (";
            foreach($DATA as$key) 
            {
                $SQL.=$key.","; 
            }           
            $SQL=rtrim($SQL,","); 
            $SQL.= ") ";            
            $result=$conn->query($SQL); 
            if(!($result)) 
            {
                return false; 
            } 
            else 
            {
                return true; 
            }           
            mysqli_close($conn);            
        }

w в приведенном выше примере я хотел бы создать статическую функцию SQL, которую я мог бы использовать в обеих базах данных [$conn=self::getConnectionA(); and $conn=self::getConnectionB();] Может быть, что-то вроде этого ???

        static public function createTable($TABLE,$DATA) 
        {           
            $SQL="CREATE TABLE {$TABLE}"; 
            $SQL.=" (";
            foreach($DATA as$key) 
            {
                $SQL.=$key.","; 
            }           
            $SQL=rtrim($SQL,","); 
            $SQL.= ") ";
            return $SQL;        
        }
        static public function createTableA($TABLE,$DATA) 
        {       
            $conn=self::getConnectionA();
            $sql=self::createTable($TABLE,$DATA);           
            $result=$conn->query($sql); 
            if(!($result)) 
            {
                return false; 
            } 
            else 
            {
                return true; 
            }           
            mysqli_close($conn);            
        }
        static public function createTableB($TABLE,$DATA) 
        {       
            $conn=self::getConnectionB();
            $sql=self::createTable($TABLE,$DATA);           
            $result=$conn->query($sql); 
            if(!($result)) 
            {
                return false; 
            } 
            else 
            {
                return true; 
            }           
            mysqli_close($conn);            
        }

Я прошу конструктивное мнение по этой теме и предложения для лучшего решения, просто, пожалуйста, примеры кода в ответах, спасибо и наилучшими пожеланиями.

1 Ответ

0 голосов
/ 18 мая 2018

Возможно, что-то более похожее на это.

Я почистил это, чтобы быть немного менее многословным, дайте мне знать, если это не ясно.Но главное - просто позволить выбору соединения быть параметром типа TABLE и DATA, вызывая его с помощью «A» или «B».

static public function _createTable($TABLE,$DATA) 
{           
    $SQL="CREATE TABLE {$TABLE}"; 
    $SQL.=" (";
    foreach($DATA as$key) 
    {
        $SQL.=$key.","; 
    }           
    $SQL=rtrim($SQL,","); 
    $SQL.= ") "; 
    return $SQL; // edit, added this           
}
static public function createTable($CONN,$TABLE,$DATA) 
{       
    switch($CONN){
      case 'A':
        $conn = self::getConnectionA();
        break;
      case 'B':
        $conn = self::getConnectionB();
        break;
    }
    $sql=self::_createTable($TABLE,$DATA);           
    $result=$conn->query($sql);
    mysqli_close($conn); 
    return (bool) $result;           
}
...