Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да се справяме с BLOB и CLOB в olingo v2?

  2. UTF-8 битки за кодиране на символи json_encode()

  3. Копиране на данни от една таблица в друга таблица. Базите данни са различни и структурата на таблицата е различна

  4. Как да импортирам CSV файл в MySQL таблица?

  5. Как да накарам функцията SUM в MySQL да върне '0', ако не бъдат намерени стойности?