Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Złożone zapytanie Wordpress przy użyciu wielu zapytań

Wydaje się to być ograniczeniem samego PHP, zobacz ten post na forach Wordpress .

Miałem ten sam problem i ostatecznie stworzyłem niestandardową funkcję, która wykonuje zadanie, wklejam ją tutaj na wypadek, gdyby była dla kogoś przydatna. Funkcja jest dość prosta, ponieważ spełnia kilka założeń, ale powinna być łatwa do zmodyfikowania w celu dostosowania do różnych potrzeb. W szczególności zakłada, że:

  • Wszystkie oświadczenia są wstawkami i aktualizacjami, nie ma danych do zwrócenia.
  • Wyrażenia są oddzielone sekwencją końca wiersza.
  • Wyciągi są zawarte w transakcji.

Oto funkcja:

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

Przykład użycia:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Doctrine 2 dodaje nowe pole, które automatycznie generuje wartości sekwencji

  2. Parsowanie pliku xml i przechowywanie go w bazie danych

  3. MySQL do zastąpienia za pomocą symbolu wieloznacznego

  4. PHP, autouzupełnianie MYSQL nie działa

  5. Jak wdrożyć funkcję Zapamiętaj mnie?