在wordpress中连接mysql数据库,直接使用全局变量 $wpdb 即可,无需手动建立连接。wordpress启动时会自动初始化该对象,开发者只需调用其提供的查询方法(如 $wpdb->get_results())或执行sql语句,框架会处理底层的连接复用与资源释放。

$wpdb 如何获取单行数据
要获取单行数据,使用 $wpdb->get_row() 方法并指定返回格式为关联数组。该方法接收SQL字符串和可选的参数绑定列表,执行后返回一个包含列名和值的对象或数组,若未找到记录则返回 null。

<?php // 假设 $wpdb 已在全局作用域可用
$sql = "SELECT ID, post_title FROM wp_posts WHERE ID = %d";
$id = 1;
$result = $wpdb->get_row($wpdb->prepare($sql, $id), ARRAY_A);
if ($result) {
echo "ID: " . $result['ID'] . ", Title: " . $result['post_title'];
} else {
echo "No result found.";
}
?>
预期输出:ID: 1, Title: Hello world!
$wpdb 如何获取多行数据
要获取多行数据,使用 $wpdb->get_results() 方法。该方法同样支持参数绑定,执行后返回一个由对象或数组组成的索引数组。如果查询没有结果,返回空数组;如果发生错误,返回 false。

<?php $sql = "SELECT ID, post_title FROM wp_posts WHERE post_status = 'publish' LIMIT 5";
$results = $wpdb->get_results($sql, ARRAY_A);
foreach ($results as $row) {
echo "Post ID: " . $row['ID'] . " - " . $row['post_title'] . "<br>";
}
?>
预期输出:列出前5篇已发布文章的ID和标题。
如何处理 $wpdb 的 SQL 注入防护
在使用 $wpdb 时,必须通过 $wpdb->prepare() 方法来处理用户输入的数据,以防止SQL注入。直接拼接用户输入到SQL字符串中是危险的。 prepare() 方法接受一个包含占位符(如 %s 表示字符串, %d 表示整数)的SQL模板,以及随后的参数列表。它会对参数进行适当的转义和类型转换,确保SQL语句的安全执行。











