乌徒帮技术范WordPressWordPress内核 › wordpress中使用$wpdb->get_results()执行sql语句操作数据库

wordpress中使用$wpdb->get_results()执行sql语句操作数据库

分类:WordPress内核

在wordpress系统中提供了直接进行sql操作的方法,这可以帮助你轻松的获取那些你不知道要用什么函数才能获取的数据。这种方法是wordpress最后的底线,因为wordpress系统本身提供的函数已经太多太多了,几乎可以完成所有调用。但可能正因为太多,开发者很难在短时间内学习和思考所有的函数,因此在庞大的wordpress函数丛中,我们只能尽力去掌握那些常用的,自己经常碰到的。而本文将提供一种方法,即使你在根本不知道有某个函数可以调用某项数据的情况下,你仍然可以通过自己对wordpress数据库表的了解,获取该数据。

好了,先给段代码,从代码讲开来:

global $wpdb;$nums=5;
$thum_posts = $wpdb->get_results("SELECT post_id,meta_value FROM $wpdb->postmeta WHERE meta_key='_thumbnail_id' AND meta_value!='' ORDER BY meta_id DESC LIMIT 0 , $nums");
if(!empty($thum_posts)){
$i=0;
foreach ($thum_posts as $showpic) {
$postid[$i] = $showpic->post_id;
$thumid[$i] = $showpic->meta_value;
$i++;
}
}

如果你对wordpress数据库表有一定的了解程度,相信应该对此不陌生。先声明一个全局变量$wpdb,一个初始化的$nums,然后使用到本文的重点$wpdb->get_results()进行对表_postmeta的查询,将查询结果放在数组$thum_posts中,再用foreach($thum_posts as $showpic)将数组中的值取出,获得了$postid[$i]和$thumid[$i]。这两个最终结果其实正是一篇文章的ID及其对应的特色图片附件的ID。

这样一讲解,或许你就似乎已经很清楚这段代码的实质了。不过别着急,请接着往下看:

$wpdb是全局变量,(有关$wpdb请看《wordpress中$wpdb类详解》一文)和$post相似,但其产生的位置我并不清楚,因此不作详解。$wpdb显然拥有get_results()属性,$wpdb->get_results()大概指将参数传递进去执行并获取结果,具体的工作原理我也不是很清晰。从上面的例子中,我们不难看出,$wpdb显然还有postmeta属性,其实仔细一回忆,就会发现postmeta是wordpress的数据库表,我们推断$wpdb还有posts、terms等属性,$wpdb->postmeta大概指本博客数据库表中含有postmeta的那个表,因为我们安装wordpress的时候,有一个数据库表前缀提示,所以我们每个人的博客数据库表是不一样的,如果你的前缀是wp,那么$wpdb->postmeta应该等于wp_postmeta。

通过$wpdb->get_results()获取的结果是一个二维以上的数组,因此用foreach层层剖析,可以得到最终想要的结果。

get_results()的参数是sql语句,如果执行正确,并且有好的结果,那么可以用if(!empty($thum_posts))来进行判断,如果执行语句发生错误,或没有得到结果,要么返回false要么为空,因此这种判断方法是可行的。

通过这种方法,我们可以很容易直接从数据库获取信息,但需要提醒的是,请一定检查好sql语句保证其正确。<完>

填写个人信息,赶快回复吧!