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

複数のクエリを使用した複雑なWordpressクエリ

    これはPHP自体の制限のようです。Wordpressフォーラムのこの投稿 。

    私は同じ問題に直面し、その仕事をするカスタム関数を作成することになりました。誰かに役立つ場合に備えて、ここに貼り付けます。この関数は、いくつかの仮定を行うためかなり単純ですが、さまざまなニーズに合わせて簡単に変更できるはずです。具体的には、次のことを前提としています。

    • すべてのステートメントは挿入と更新であり、返すデータはありません。
    • ステートメントは行末シーケンスで区切られます。
    • ステートメントはトランザクション内に含まれています。

    関数は次のとおりです:

    function execute_multiline_sql($sql) {
        global $wpdb;
        $sqlParts = array_filter(explode("\r\n", $sql));
        foreach($sqlParts as $part) {
            $wpdb->query($part);
            if($wpdb->last_error != '') {
                $error = new WP_Error("dberror", __("Database query error"), $wpdb->last_error);
                $wpdb->query("rollback;");
                return $error;
            }
        }
        return true;
    }
    

    使用例:

    $sql = "start transaction;\r\n" .
           "insert into ...;\r\n" .
           "update ...;\r\n" .
           "commit;\r\n"
           ;
    
    $result = execute_multiline_sql($sql);
    if(is_wp_error($result)) {
        //Fail!
    }
    


    1. トランザクション、コミット、およびロールバックのMySQL自動インクリメント列

    2. 結合せずに複数のテーブルから選択しますか?

    3. CakePHP:hasManyアソシエーションが認識されない

    4. SQL ServerのJSON_QUERY()とJSON_VALUE():違いは何ですか?