Get_var trong WordPress là gì?

Tương tác với cơ sở dữ liệu là một trong những khía cạnh chính trong công việc của hầu hết mọi trang web hiện đại. Các công cụ phổ biến trong một số trường hợp có API tích hợp để làm việc với các bảng và WordPress cũng không ngoại lệ. Tính năng này cho phép các nhà phát triển mở rộng đáng kể chức năng của trang web và sử dụng các bảng trong cơ sở dữ liệu linh hoạt hơn



Trước khi thực hiện các truy vấn đến cơ sở dữ liệu, trước tiên bạn phải kết nối với nó. Trong trường hợp sử dụng WordPress, biến $ wpdb sẽ có sẵn cho chúng tôi - nó đã chứa một đối tượng lớp, các phương thức cho phép chúng tôi làm việc với các bảng trong cơ sở dữ liệu

Trước khi sử dụng lớp, bạn cần toàn cầu hóa biến 

$id = 10;
$key = "first_name";
$value = "John";
 
// %s reports that a string is expected,%d is a number
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $id, $key, $value
    ));

Sử dụng phương thức query()

Để thực hiện một truy vấn cụ thể, chúng ta có thể sử dụng phương thức

$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));
0

$wpdb->query("DELETE FROM $wpdb->posts WHERE post_type = 'draft'"); // we overwrite all drafts

Một ví dụ khá đơn giản có chứa tất cả các tham số để thực thi nó. Phương pháp này khá an toàn, cho đến thời điểm chuyển bất kỳ tham số nào trong yêu cầu. Ở đây, cần phải sàng lọc các biến từ SQL injection để bảo mật dữ liệu và các thao tác trái phép. Đối với những mục đích này, sẽ thuận tiện khi sử dụng phương pháp 

$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));
1 kết hợp với phương pháp 
$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));
2
$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));
3

Sử dụng phương thức chuẩn bị()

Trong ví dụ này, chúng tôi sẽ thêm tên cho người dùng có ID là 10. Đây là một ví dụ về thoát dữ liệu. Điểm đặc biệt của ví dụ này là mỗi biến được truyền cách nhau bằng dấu phẩy, theo thứ tự thích hợp như được chỉ ra trong yêu cầu

$id = 10;
$key = "first_name";
$value = "John";
 
// %s reports that a string is expected,%d is a number
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $id, $key, $value
    ));

Đây là một ví dụ khá đơn giản, nhưng trong thực tế, cần phải chuyển một số lượng lớn các trường;

$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));

Để tham chiếu đến các bảng tiêu chuẩn, có các biến đặc biệt trong lớp chứa tên của chúng

________số 8

Ví dụ: hãy xóa bản ghi đầu tiên khỏi bảng wp_post bằng biến này

$wpdb->query("DELETE FROM $wpdb->posts WHERE id = '1'")

Tiền tố bảng và tên của nó được thay thế từ một biến, tất nhiên, điều này thật tuyệt, nhưng đôi khi bạn cần tham khảo các bảng không có sẵn theo mặc định trong WordPress. Để lấy table prefix từ file cấu hình, bạn có thể sử dụng giá trị của biến $wpdb->prefix. Do đó, tiền tố bảng và tên của nó được chỉ định riêng

$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));
0

Tìm nạp dữ liệu từ các bảng trong WordPress

Trong các ví dụ, nó đã chỉ rõ cách bạn có thể xóa các bản ghi trong bảng. Không có gì lạ khi thực hiện lựa chọn dữ liệu từ các bảng bằng cách sử dụng câu lệnh

$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));
4. Có một 
$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));
5 phương pháp để lấy kết quả của một truy vấn

Tham số phương thức Get_result()

$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));
3

Tham số đầu tiên là chính chuỗi truy vấn

$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));
4, tham số thứ hai $ result_type là tùy chọn, nó xác định kết quả là phương thức sẽ trả về loại dữ liệu nào

  • ĐỐI TƯỢNG - Là một đối tượng (mặc định);
  • OBJECT_K - Mảng kết hợp, các giá trị từ cột đầu tiên sẽ được sử dụng làm khóa, các giá trị trùng lặp sẽ bị bỏ qua;
  • ARRAY_A - Một mảng có chỉ mục số, bao gồm các mảng kết hợp, do đó, sẽ sử dụng tên cột làm chỉ mục;
  • ARRAY_N - Mảng có chỉ mục số

Để làm ví dụ về việc sử dụng, hãy chọn tiêu đề của 10 trang được xuất bản gần đây nhất từ ​​​​cơ sở dữ liệu theo thứ tự giảm dần theo ngày xuất bản

$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));
5

Như bạn có thể thấy, tham số thứ hai không được chỉ định, điều đó có nghĩa là kết quả lựa chọn sẽ được trả về dưới dạng một đối tượng. Không phải lúc nào bạn cũng phải chọn bản ghi dưới dạng danh sách. Sử dụng phương pháp này trong trường hợp bạn cần giá trị của một trường không phải lúc nào cũng thuận tiện. Có một phương pháp 

$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));
7 khác cho những mục đích này

Phương thức get_var() cho phép bạn nhận một giá trị duy nhất như một kết quả. Nó có thể là giá trị của một trường hoặc giá trị của tổng hoặc số lượng bản ghi

Tham số phương thức Get_var()

$arIns = [];
$arIns[] = 10;
$arIns[] = "first_name";
$arIns[] = "John";
 
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $arIns
    ));
7

  • $arIns = [];
    $arIns[] = 10;
    $arIns[] = "first_name";
    $arIns[] = "John";
     
    $wpdb->query(
            $wpdb->prepare(
            "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
            $arIns
        ));
    8 - số cột (mặc định là 0);
  • $arIns = [];
    $arIns[] = 10;
    $arIns[] = "first_name";
    $arIns[] = "John";
     
    $wpdb->query(
            $wpdb->prepare(
            "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
            $arIns
        ));
    9 - số hàng (mặc định 0)

Bây giờ chúng ta hãy xem xét một số ví dụ. Ví dụ đầu tiên, hãy lấy ngày đăng ký của người dùng có ID là 10

$wpdb->query("DELETE FROM $wpdb->posts WHERE post_type = 'draft'"); // we overwrite all drafts
0

Nếu người dùng có ID này tồn tại, thì kết quả là chúng tôi sẽ nhận được ngày đăng ký của người dùng. Bây giờ hãy thử đếm số trang đang hoạt động trên trang web

$id = 10;
$key = "first_name";
$value = "John";
 
// %s reports that a string is expected,%d is a number
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $id, $key, $value
    ));
0

Do đó, chúng tôi sẽ nhận được một thông báo với số lượng trang có trạng thái "Đã xuất bản". Ví dụ này trả về một giá trị là kết quả. Đôi khi bạn cần lấy giá trị của một hàng phù hợp với điều kiện lựa chọn. Phương pháp

$wpdb->commentmeta
$wpdb->comments
$wpdb->links
$wpdb->options
$wpdb->postmeta
$wpdb->posts
$wpdb->terms
$wpdb->term_relationships
$wpdb->term_taxonomy
$wpdb->usermeta
$wpdb->users
0 rất phù hợp cho mục đích này

Tham số phương thức Get_row()

$id = 10;
$key = "first_name";
$value = "John";
 
// %s reports that a string is expected,%d is a number
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $id, $key, $value
    ));
1

Là tham số đầu tiên, như trong các ví dụ trước, một chuỗi truy vấn được truyền. Tham số thứ hai là

$wpdb->commentmeta
$wpdb->comments
$wpdb->links
$wpdb->options
$wpdb->postmeta
$wpdb->posts
$wpdb->terms
$wpdb->term_relationships
$wpdb->term_taxonomy
$wpdb->usermeta
$wpdb->users
1, loại dữ liệu xuất ra, có thể là các giá trị

  • ĐỐI TƯỢNG - Là một đối tượng (mặc định);
  • ARRAY_A - Là một mảng kết hợp;
  • ARRAY_N - Mảng có chỉ mục số

Số thứ tự của hàng bắt buộc được truyền dưới dạng tham số thứ ba $row_offset, giá trị mặc định là 0

Ví dụ: hãy lấy tiêu đề của bài đăng gần đây nhất

$id = 10;
$key = "first_name";
$value = "John";
 
// %s reports that a string is expected,%d is a number
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $id, $key, $value
    ));
2

Kết quả của việc thực hiện yêu cầu này, một bản ghi sẽ được nhận, ngày xuất bản của bài đăng sẽ được sử dụng làm trường sắp xếp. Chúng ta cũng có thể lấy một bản ghi từ một cột bằng phương thức 

$wpdb->commentmeta
$wpdb->comments
$wpdb->links
$wpdb->options
$wpdb->postmeta
$wpdb->posts
$wpdb->terms
$wpdb->term_relationships
$wpdb->term_taxonomy
$wpdb->usermeta
$wpdb->users

Tham số phương thức Get_col()

$id = 10;
$key = "first_name";
$value = "John";
 
// %s reports that a string is expected,%d is a number
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $id, $key, $value
    ));
3

Tương tự, một chuỗi truy vấn được truyền dưới dạng tham số đầu tiên. Số của cột bắt buộc được truyền dưới dạng tham số thứ hai của $col_offset, mặc định là 0. Hãy xem một ví dụ với phương pháp này

Hãy lấy tiêu đề của bài viết cuối cùng;

$id = 10;
$key = "first_name";
$value = "John";
 
// %s reports that a string is expected,%d is a number
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $id, $key, $value
    ));
4

Chúng tôi hiển thị giá trị bằng cách tham chiếu đến khóa của đối tượng một chiều

Ghi dữ liệu (INSERT) vào bảng WordPress

Bây giờ, bạn nên cân nhắc khả năng thêm một bản ghi vào cơ sở dữ liệu bằng phương thức insert ()

Tham số phương thức Insert()

$id = 10;
$key = "first_name";
$value = "John";
 
// %s reports that a string is expected,%d is a number
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $id, $key, $value
    ));
5

Là tham số đầu tiên

$wpdb->commentmeta
$wpdb->comments
$wpdb->links
$wpdb->options
$wpdb->postmeta
$wpdb->posts
$wpdb->terms
$wpdb->term_relationships
$wpdb->term_taxonomy
$wpdb->usermeta
$wpdb->users
3 - tên của bảng mà bản ghi sẽ được thực hiện được chuyển vào. Tham số thứ hai là $data, đây là một mảng kết hợp, ở dạng key-value, chứa dữ liệu để ghi vào bảng. Tham số thứ ba,
$wpdb->commentmeta
$wpdb->comments
$wpdb->links
$wpdb->options
$wpdb->postmeta
$wpdb->posts
$wpdb->terms
$wpdb->term_relationships
$wpdb->term_taxonomy
$wpdb->usermeta
$wpdb->users
4, chứa các định dạng của các giá trị được truyền trong tham số thứ hai. Bây giờ, để rõ ràng, hãy xem một ví dụ về việc thêm bản ghi vào bảng

$id = 10;
$key = "first_name";
$value = "John";
 
// %s reports that a string is expected,%d is a number
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $id, $key, $value
    ));
6

Do đó, một bản ghi với các giá trị trường tương ứng từ mảng sẽ được thêm vào bảng

$wpdb->commentmeta
$wpdb->comments
$wpdb->links
$wpdb->options
$wpdb->postmeta
$wpdb->posts
$wpdb->terms
$wpdb->term_relationships
$wpdb->term_taxonomy
$wpdb->usermeta
$wpdb->users
5

Cuối cùng, hãy xem xét một phương pháp để cập nhật giá trị trong một bảng. Phương thức update() được gọi và nhận năm tham số làm đầu vào

$id = 10;
$key = "first_name";
$value = "John";
 
// %s reports that a string is expected,%d is a number
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $id, $key, $value
    ));
7

Tên của bảng được truyền dưới dạng tham số đầu tiên -

$wpdb->commentmeta
$wpdb->comments
$wpdb->links
$wpdb->options
$wpdb->postmeta
$wpdb->posts
$wpdb->terms
$wpdb->term_relationships
$wpdb->term_taxonomy
$wpdb->usermeta
$wpdb->users
3. Một mảng có giá trị mới cho các trường sẽ được cập nhật được chuyển thành tham số thứ hai. Tham số thứ ba ($where) là bộ lọc theo đó các trường sẽ được cập nhật. Tham số thứ tư (
$wpdb->commentmeta
$wpdb->comments
$wpdb->links
$wpdb->options
$wpdb->postmeta
$wpdb->posts
$wpdb->terms
$wpdb->term_relationships
$wpdb->term_taxonomy
$wpdb->usermeta
$wpdb->users
4) là định dạng dữ liệu của các trường sẽ được cập nhật. Tham số thứ tư ($where_format) là định dạng của các trường cho điều kiện lựa chọn. Mô tả các tham số hóa ra hơi khó hiểu, vì vậy hãy xem ví dụ về cập nhật bản ghi trong cơ sở dữ liệu

$id = 10;
$key = "first_name";
$value = "John";
 
// %s reports that a string is expected,%d is a number
$wpdb->query(
        $wpdb->prepare(
        "INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value ) VALUES ( %d, %s, %s )",
        $id, $key, $value
    ));
8

Theo kết quả của phương thức, giá trị của trường meta_value trong bảng wp_usermeta sẽ được cập nhật, bản ghi tương ứng với các tham số của các trường trong bộ lọc. Đây có lẽ là tất cả. Chúng tôi đã xem xét tất cả các phương pháp cơ bản đủ để làm việc với cơ sở dữ liệu trong hầu hết các trường hợp