为了方便访问mysql数据库,wordpress提供了一个全局变量$wpdb,通过$wpdb变量可以访问数据库中的任何数据表,可以实现对数据库的各项操作,包括建表、查询、删除、更新等,但是访问仅限于一个数据库,要访问多个数据库,需要重新实例化一个wpdb类。

使用的时候请不要直接调用$wpdb类中的方法。WordPress定义了$wpdb的全局变量,所以直接调用该全局变量$wpdb的实例来操作数据库。调用之前全局化变量$wpdb:

global $wpdb;

查询:

<?php $wpdb->query(“DELETE FROM $wpdb->post WHERE post_id = ’13’ “); ?>

其中query的参数是任何mysql语句。返回值是有多少行被选出、影响。如果出错返回FALSE。

选出一个变量

<?php $wpdb->get_var(‘query’,column_offset,row_offset); ?>

其中query为要查询的mysql语句,如果为空的话,则表示从cache中选出。

column_Offset和row_offet表示制定query返回值的第几列和第几行,缺省值为零。

典型用法为:

$user_count = $wpdb->get_var($wpdb->prepare(“SELECT COUNT(*) FROM $wpdb->users;”));

echo “

User count is ” . $user_count . “

“;

?>

这个sql只选出一个值,缺省的0行0列,即表示选出用户数目。

$wpdb->prepare是为了保护查询SQL注入攻击,另一种说法是“添加prepare的方式来确定没有用一个非法操作或任何非法字符来进行处理”

选出一行

<?php $wpdb->get_row(‘query’, output_type, row_offset); ?>

query为要执行的mysql语句;output_type表示返回值是object,hash或者是数组;row_offset表示第几行。

缺省情况下output_type为object。

$mylink = $wpdb->get_row(“SELECT * FROM $wpdb->links WHERE link_id = 10”);

echo $mylink->link_id; // prints “10”

如果output_type=ARRAY_A,那么:

$mylink = $wpdb->get_row(“SELECT * FROM $wpdb->links WHERE link_id = 10”, ARRAY_A);

echo $mylink[‘link_id’]; // prints “10”

如果output_type=ARRAY_N,那么:

$mylink = $wpdb->get_row(“SELECT * FROM $wpdb->links WHERE link_id = 10”, ARRAY_N);

echo $mylink[1]; // prints “10”

选出一列

<?php $wpdb->get_col(‘query’,column_offset); ?>

一般选出

$wpdb->get_results(‘query’, output_type);

例子一:

$fivesdrafts = $wpdb->get_results(“SELECT ID, post_title FROM $wpdb->posts

WHERE post_status = ‘draft’ AND post_author = 5″);

foreach ($fivesdrafts as $fivesdraft) {

echo $fivesdraft->post_title;

}

例子二:获取所有用户的邮箱

$wp_user_email = $wpdb->get_col(“SELECT DISTINCT user_email FROM $wpdb->users”);

foreach($wp_user_email as $a){

echo $a.”
“;

}

插入一行

<?php $wpdb->insert( $table, $data, $format ); ?>

实例:

$wpdb->insert( ‘table’, array( ‘column1’ => ‘value1’, ‘column2’ => 123 ), array( ‘%s’, ‘%d’ ) )

更新

$wpdb->update( $table, $data, $where, $format = null, $where_format = null );

实例:

$wpdb->update( ‘table’, array( ‘column1’ => ‘value1’, ‘column2’ => ‘value2’ ), array( ‘ID’ => 1 ), array( ‘%s’, ‘%d’ ), array( ‘%d’ ) )

读取多条记录:

使用get_results方法,Wpdb函数以数组形式返回整个查询结果。

<?php $wpdb->get_results(“query”, output_type); ?>

query:(字符串)你希望执行的查询语句。将该参数设为null会使函数返回上一个查询的缓存结果中的信息。

output_type:三个预定义的常量之一。默认值为OBJECT。更多信息请见上文中的“选择表行”。

OBJECT —— 以对象形式输出返回的结果

ARRAY_A ——以关联数组形式输出返回的结果

ARRAY_N —— 以数值索引数组形式输出返回的结果

示例:先从数据表wp_posts获取文章ID和文章标题,然后用遍历数组输出所有文章标题

$a = $wpdb->get_results(“SELECT ID, post_title FROM $wpdb->posts”);

foreach ($a as $b) {

echo $b->post_title.”
“;

}

?>

$wpdb->posts 等同于 数据表前缀_posts,默认为wp_posts

例子:从数据中选取评论数量最多的十篇文章,作为热门文章

$result = $wpdb->get_results(“SELECT comment_count,ID,post_title FROM $wpdb->posts WHERE 1 ORDER BY comment_count DESC LIMIT 0 , 10”);

foreach ($result as $topten) {

$postid = $topten->ID;

$title = $topten->post_title;

$commentcount = $topten->comment_count;

if ($commentcount != 0) {

?>

<?php echo $title ?>

利用$result = $wpdb->get_results(” “)取得查询的结果集,实际上是一个多维数组,然后foreach循环读取每一行数据到$topten变量,最后用$topten->post_title取得标题的值。括号中引号里面的是SQL查询语句。

关于wpdb prepare

前面提到不清楚为什么每个mysql语句都会包在prepare中,这里给出解释:因为mysql语句中可能含有单引号双引号这样的字符,如果不加 处理直接送给mysql,可能会导致错误。于是这里通过一个prepare来对mysql语句进行预处理。

prepare的语法是:

$sql = $wpdb->prepare( ‘query’ [, value_parameter, value_parameter … ] );

在query中可以包含%d,%S,%f,分别表示后面参数的类型是整数,字符和浮点,如果要显示%号,则用%%,语法和C语言里面的printf基本一样。

到这里基本上就讲完了。对一般数据库的处理应该都没有问题了。如果碰到问题可以在本文开始时提到的那篇文章中去查阅。

$wpdb是一个全局变量,包含多个关于数据库查询函数:

$wpdb -> get_results(‘query’);

$wpdb->query(‘query’);

$wpdb->get_var(‘query’,column_offset,row_offset);

$wpdb->get_row(‘query’, output_type, row_offset);

$wpdb->get_col(‘query’,column_offset);

$wpdb->get_results(‘query’, output_type);

$wpdb->insert( $table, $data, $format );

$wpdb->update( $table, $data, $where, $format = null, $where_format = null );

$wpdb->prepare( ‘query’ [, value_parameter, value_parameter … ] );

$wpdb->show_errors();

$wpdb->hide_errors();

$wpdb->print_error();

$wpdb->get_col_info(‘type’, offset);

$wpdb->flush();


新软师兄 » WordPress数据库操作类$wpdb的使用方法
50T免费网盘资源大集合【持续更中~~~~】:点击查看

dase kand pornhan.mobi xvideo desi gay pcso 2pm result today pinoytvfriends.com where i can watch bad romeo كلام فى النيك wfporn.com قصص محارم حديثة busporn porngugu.mobi indian sexx vedios sex ka video noticieroporno.com himachal pradesh sex com
nero hentai hentaitgp.com ламия хентай www.mom xxx.com alohaporn.me sahara knite mature fucking tubepatrolporn.com bhabi sex indian girl sex gotporn.mobi xnxx family strocks ang probinsyano july 20 2022 full episode youtube pilipinoteleserye.com ano ang pambansang sasakyan ng pilipinas
احلي سكس محارم pornxporn.org نيك فلاحى multi.xnxx alohaporn.net telugu sex chart سكس قصيرات arabysexy.org نيك نقاب www assames sex com umora.info desi sexy bhabi 8teenx bukaporn.com india hot sex videos