sql >> Database >  >> RDS >> Mysql

Complexe WordPress-query met meerdere query's

Dit lijkt een beperking van PHP zelf te zijn, zie dit bericht op de Wordpress-forums .

Ik werd geconfronteerd met hetzelfde probleem en heb uiteindelijk een aangepaste functie gemaakt die het werk doet, ik plak het hier voor het geval het nuttig is voor iemand. De functie is vrij eenvoudig omdat er een paar aannames worden gedaan, maar het zou gemakkelijk moeten zijn om deze aan te passen aan verschillende behoeften. Het gaat er specifiek van uit dat:

  • Alle verklaringen zijn toevoegingen en updates, er zijn geen gegevens om te retourneren.
  • Statementen worden gescheiden door een volgorde aan het einde van de regel.
  • Afschriften zijn ingesloten in een transactie.

Hier is de functie:

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

Gebruiksvoorbeeld:

$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 - vind een tabel in alle databases

  2. Hoe kan ik een JSON-bestand importeren in PostgreSQL?

  3. Architectuurimplementatie en ontwerp voor een meldingssysteem met socket.io node.js en inkomende berichten

  4. MySQL - String gebruiken als primaire sleutel