在WordPress中,`get_results` 是WPDB类的一个方法,用于执行SQL查询并返回结果。它常用于自定义查询数据库,当WordPress的内置函数(如 `get_posts` 或 `wp_get_archives`)不能满足需求时,`get_results` 就变得非常有用。
要使用 `get_results`,你通常需要首先获取到 `wpdb` 对象的实例,这通常是通过全局变量 `$wpdb` 来实现的。以下是一个基本的使用示例:
```php
global $wpdb;
$results = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_status = 'publish'" );
foreach ( $results as $row ) {
echo $row->post_title . '<br>';
}
```
在这个例子中,我们首先全局声明了 `$wpdb` 对象,然后使用 `get_results` 方法执行了一个SQL查询,查询所有状态为“publish”的文章。查询结果存储在 `$results` 数组中,我们可以遍历这个数组来访问每篇文章的标题。
`get_results` 方法有几个参数,其中最常用的是查询字符串。除此之外,你还可以指定返回结果的类型:
- `'OBJECT'`(默认):返回一个包含对象的数组,每个对象都代表数据库中的一行。
- `'ARRAY_A'`:返回一个包含关联数组的数组,每个数组都代表数据库中的一行。
- `'ARRAY_N'`:返回一个包含数字索引数组的数组,每个数组都代表数据库中的一行。
例如,如果你希望以关联数组的形式获取结果,你可以这样做:
```php
$results = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_status = 'publish'", ARRAY_A );
foreach ( $results as $row ) {
echo $row['post_title'] . '<br>';
}
```
在使用 `get_results` 时,请确保你的SQL查询是安全的,特别是当你使用用户输入作为查询的一部分时。为了避免SQL注入攻击,你应该始终使用预处理语句或至少使用 `esc_sql` 函数来清理用户输入。
此外,对于大多数常见的查询需求,WordPress提供了更高级别的函数(如 `get_posts`),这些函数更加便捷且通常更安全。但在需要执行复杂查询或定制查询时,`get_results` 是一个非常有用的工具。