Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kueri Wordpress yang rumit menggunakan banyak kueri

Ini tampaknya menjadi batasan PHP itu sendiri, lihat postingan ini di forum Wordpress .

Saya dihadapkan dengan masalah yang sama dan akhirnya membuat fungsi khusus yang berfungsi, saya menempelkannya di sini jika itu berguna untuk seseorang. Fungsinya agak sederhana karena melakukan beberapa asumsi, tetapi harus mudah dimodifikasi untuk menyesuaikan kebutuhan yang berbeda. Secara khusus diasumsikan bahwa:

  • Semua pernyataan adalah sisipan dan pembaruan, tidak ada data untuk dikembalikan.
  • Pernyataan dipisahkan dengan urutan akhir baris.
  • Pernyataan terlampir dalam transaksi.

Berikut adalah fungsinya:

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

Contoh penggunaan:

$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. MySQL Group By dan Jumlah total nilai kolom lainnya

  2. ClassNotFoundException saat menghubungkan ke Mysql dengan JDBC

  3. Memformat stempel waktu SQL dengan PHP

  4. Kerangka Entitas Memasukkan Data Awal Pada Rebuild

  5. Bagaimana menghitung jumlah baris dalam output repeater ACF