Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn Wordpress phức tạp sử dụng nhiều truy vấn

Đây dường như là một hạn chế của chính PHP, hãy xem bài đăng này trên diễn đàn Wordpress .

Tôi đã phải đối mặt với cùng một vấn đề và cuối cùng đã tạo một hàm tùy chỉnh để thực hiện công việc, tôi dán nó vào đây trong trường hợp nó hữu ích cho ai đó. Chức năng này khá đơn giản vì nó thực hiện một số giả định, nhưng sẽ dễ dàng sửa đổi nó để phù hợp với các nhu cầu khác nhau. Cụ thể, nó giả định rằng:

  • Tất cả các câu lệnh đều là bản chèn và bản cập nhật, không có dữ liệu nào để trả về.
  • Các câu lệnh được phân tách bằng một chuỗi cuối dòng.
  • Các câu lệnh được đính kèm trong một giao dịch.

Đây là chức năng:

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

Ví dụ sử dụng:

$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. Không thể chuyển đổi varchar thành datetime trong MySql

  2. MySQL có thể khôi phục đáng tin cậy các bản sao lưu có chứa các khung nhìn hay không?

  3. MySQL:IF trong thủ tục được lưu trữ

  4. Làm cách nào để kết nối cơ sở dữ liệu MySql với Firebase?

  5. Cách thực hiện sao lưu gia tăng trong Mysql