sql >> Databáze >  >> RDS >> Mysql

Složitý Wordpress dotaz pomocí více dotazů

Zdá se, že jde o omezení samotného PHP, viz tento příspěvek na fórech Wordpress .

Potýkal jsem se se stejným problémem a skončil jsem vytvořením vlastní funkce, která dělá tuto práci, vložím ji sem pro případ, že je to pro někoho užitečné. Funkce je poměrně jednoduchá, protože provádí několik předpokladů, ale mělo by být snadné ji upravit podle různých potřeb. Konkrétně předpokládá, že:

  • Všechny příkazy jsou vložky a aktualizace, nejsou zde žádná data k vrácení.
  • Výpisy jsou odděleny posloupností řádků na konci.
  • Výpisy jsou přiloženy k transakci.

Zde je funkce:

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

Příklad použití:

$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. Úprava pro výchozí nastavení časového pásma na RDS

  2. 2 způsoby, jak přidat znak procenta k číslu v SQLite

  3. Přejmenování názvu tabulky Amazon RDS na velké písmeno způsobí chybu

  4. Vložit do... Sloučit... Vybrat (SQL Server)