sql >> データベース >  >> RDS >> Mysql

セミコロンで区切られたmysqlで複数のクエリを実行するスマートな方法はありますか;

    これが実用的な解決策です

    <?php
    function function_that_does_multiple_queries($mq, $dblink) {
        // if a new line follows the ; then $q_array = explode(';\n',$mq); is suggested since queries can contain ; below
        $q_array = explode(";",$mq);
        /* 
        //To check structure of array
        echo "<pre>";
        print_r($q_array);
        echo "</pre>";
        exit();
        */
        foreach($q_array as $q){
            $q = trim($q);
            $r[] = mysqli_query($dblink,$q);
        }
        return $r;
    }
    $multi_query = "CREATE TABLE IF NOT EXISTS `stuff_5_firm` (
      `firmid` int(11) NOT NULL,
      `firm_name` varchar(256) NOT NULL,
      `firm_invoice_adr` text NOT NULL,
      `firm_invoice_email` varchar(256) NOT NULL,
      `firm_admin_con_to_userid` int(16) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
    CREATE TABLE IF NOT EXISTS `stuff_6_invoice` (
      `invoiceid` int(11) NOT NULL,
      `inv_date` datetime NOT NULL,
      `inv_due` datetime NOT NULL,
      `inv_paid` datetime NOT NULL,
      `inv_amount` int(11) NOT NULL,
      `inv_text` int(11) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
    
    function_that_does_multiple_queries($multi_query, $dblink);
    
    ?>
    
    ";出口(); * / foreach($ q_array as $ q){$ q =Trim($ q); $ r [] =mysqli_query($ dblink、$ q); } return $ r;} $ multi_query ="CREATE TABLE IF NOT EXISTS` stuff_5_firm`( `firmid` int(11)NOT NULL、`firm_name` varchar(256)NOT NULL、 `firm_invoice_adr` text NOT NULL、`firm_invoice_email` varchar (256)NOT NULL、 `firm_admin_con_to_userid` int(16)NOT NULL)ENGINE =InnoDB DEFAULT CHARSET =latin1; CREATE TABLE IF NOT EXISTS` stuff_6_invoice`( `invoiceid` int(11)NOT NULL、` inv_date` datetime NOT NULL、 `inv_due` datetime NOT NULL、` inv_paid` datetime NOT NULL、 `inv_amount` int(11)NOT NULL、` inv_text` int(11)NOT NULL)ENGINE =InnoDB DEFAULT CHARSET =latin1; "; function_that_does_multiple_queries($ multi_query、$ dblink);?>

    おそらく、ここで説明されているmysqli_multi_queryを使用する方が賢明です http://php.net /manual/en/mysqli.multi-query.php (@andrewsiに感謝します。)




    1. MySQLエラー1005(HY000):テーブル'foo。#sql-12c_4'を作成できません(errno:150)

    2. すべてのmysqlテーブル間のすべての関係を見つける方法は?

    3. Npgsql:タイムスタンプの古い浮動小数点表現はサポートされていません

    4. 最新バージョンのMariaDBサーバーを使用した最新のJiraへのアップグレード