WordPress 查询数据库 操作数据库

https://www.168seo.cn/jianzhan/wordpress/advance-wordpress-tutorial/24692.html

 

插件位置

需要注意的是,由于在WordPress中可以配置wp-content/plugins/目录的位置,所以你必须使用plugin_dir_path()plugins_url()两个函数来获取插件的路径。

WordPress 查询数据库

查询

 

Python

 

1

2

3

4

5

6

7

8

global $wpdb;

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

    WHERE post_status = 'publish' AND post_author = 1");

foreach ($fivesdrafts as $fivesdraft) {

    echo $fivesdraft->ID."  ".$fivesdraft->post_title."<br>";

}

die();

 

 

输出:

WordPress 查询数据库 操作数据库-新乡seo|网站优化,网站建设_微信公众号:zeropython—昊天博客

WordPress是一个非常强大的内容管理系统,非常适合搭建CMS网站,也非常适合二次开发。

本文就为大家介绍一下,在二次开发中非常重要的一个环节–数据库操作。

wpdb类

为了方便二次开发,WordPress封装了一个非常友好的数据库操作类:wpdb

wpdb类封装了所有的数据库操作函数,它是基于开源的数据库操作类ezSQL进行修改的,使其更适合于WordPress,也使其仅适用于mySQL数据库。

同时,WordPress还提供了一个全局变量$wpdb,并将其实例化为wpdb类的对象。

这样我们就可以直接使用$wpdb来调用所有的数据库操作函数。

注意 使用前 一定要 global $wpdb;

query函数

这个函数是最基本的操作函数,$query为SQL语句,提交给数据库执行,结果分两种情况:

1). 如果是insert|delete|update|replace, 返回受影响行数,在insert|replace这种情况下,该函数会用$this->insert_id记录下新插入的ID。

2). 如果是“select”,该会用$this->last_result记录下查询到结果集,返回查询到的记录行数。

如果出错,则返回FALSE。

实例:

 

Python

 

1

2

3

4

5

6

7

8

9

10

<?php

$wpdb->query(

    "

    UPDATE $wpdb->posts

    SET post_parent = 7

    WHERE ID = 15 AND post_status = 'static'

    "

);

?>

 

 

escape函数

使用反斜线引用数据,也就是使用魔术引号。

实例:

 

Python

 

1

2

3

4

5

6

<?php

$name = $wpdb->escape($name);

$email = $wpdb->escape($email);

$wpdb->query("INSERT INTO myusers (id, name, email) VALUES (NULL, '$name', '$email')");

?>

 

 

insert函数

这是插入记录函数,第一个参数是表的字段数组,第二个是数据数组,第三个用于规定$data中每个值的数据类型。插入数据返回1,否则为0。

示例:

 

Python

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?

$wpdb->insert(

    'table',

    array(

        'column1' => 'value1',

        'column2' => 123

    ),

    array(

        '%s',

        '%d'

    )

);

?>

 

 

update函数

这是更新记录函数,第一个参数是表的字段数组,第二个是数据数组,第三个是条件数组,第四个和第五个分别用于规定$和$where中每个值的数据类型。更新了为1,否则为0。

实例:

 

Python

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<?php

$wpdb->update(

    'table',

    array(

        'column1' => 'value1',  // string

        'column2' => 'value2'   // integer (number)

    ),

    array( 'ID' => 1 ),

    array(

        '%s',   // value1

        '%d'    // value2

    ),

    array( '%d' )

);

?>

 

 

get_var函数

这个只返回一个值,默认是第0行第0列。如果$query不为空,首先执行查询,如果$query为空的话,则表示从cache中选出;然后返回第X列第Y行的值。

实例:

 

Python

 

1

2

3

4

5

<?

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

echo "<p>User count is {$user_count}</p>";

?>

 

 

get_row函数

返回一行,$output指定返回的类型,可以是ARRAY_A(关联数组)、ARRAY_N(数字数组)或者OBJECT(对象)。$y指定第几行。

实例:

默认情况下,$output的值为OBJECT,那么用法如下:

 

Python

 

1

2

3

4

5

<?php

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

echo $mylink->link_id; // prints "10"

?>

 

 

如果$output的值为ARRAY_A,那么用法如下:

 

Python

 

1

2

3

4

5

<?php

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

echo $mylink['link_id']; // prints "10"

?>

 

 

如果$output的值为ARRAY_N,那么用法如下:

 

Python

 

1

2

3

4

5

<?php

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

echo $mylink[1]; // prints "10"

?>

 

 

get_col函数

返回一列,$x指定第几列。

实例:

 

Python

 

1

2

3

4

5

6

7

<?

$names = $wpdb->get_col("SELECT name, email FROM myusers", 0)

foreach ( $names as $name ) {

    echo $name;

}

?>

 

 

get_results函数

返回查询的结果集,允许以ARRAY_A、ARRAY_N或者OBJECT三种方式返回。

 

Python

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<?php

$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;

}

?>

 

 

get_col_info函数

返回字段信息。

 

Python

 

1

2

3

4

5

<?php

$col_name = $wpdb->get_col_info('name', 0);

echo $col_name;

?>

 

 

prepare函数

这是一个可变参数函数,即函数的参数个数不确定。$query为SQL语句,其中可以包含像%s和%d这样的占位符,其它所有非占位符里面的%都要使用%%来代替。由于SQL语句中可能含有像单引号、双引号这样的特殊字符,如果不进行处理就直接提交给数据库,可能会导致错误或者出现安全问题。为此,我们可以通过prepare函数来对SQL语句进行。其实该函数的用法非常简单,就跟C语言中的sprintf()和vsprintf()差不多。

用法:

 

Python

 

1

2

<?php $sql = $wpdb->prepare( 'query' [, value_parameter, value_parameter ...] ); ?>

 

 

实例:

 

Python

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<?

$metakey    = "Harriet's Adages";

$metavalue  = "WordPress' base interface is like Sunday Morning: Easy.";

 

$wpdb->query( $wpdb->prepare(

    "

        INSERT INTO $wpdb->postmeta

        ( post_id, meta_key, meta_value )

        VALUES ( %d, %s, %s )

    ",

    10,

    $metakey,

    $metavalue

) );

?>

 

 

其他

另外还有两个常量:SAVEQUERIES和WP_DEBUG。设置SAVEQUERIES常量为TRUE,可以把在里执行的所有查询及其停止时间保存到$this->queries这个数组中,以后调试的时候可以使用;而设置WP_DEBUG常量为TRUE,则可以输出错误。不过,这两个常量开关默认都没有打开,我们在测试的时候,可以在wp_config.php文件中将其开启。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

std string与线程安全_C++标准库多线程简介Part1

Part1:线程与互斥量本篇文章将简单的介绍一下C的标准线程库&#xff0c;本篇内容十分基础&#xff0c;如果你有C多线程相关的使用经验或者知识&#xff0c;就不必在这篇文章上浪费时间了...如果你认为本篇文章对你有帮助&#xff0c;请点赞&#xff01;&#xff01;&#xff01…

secilog 1.17 发布 增加了英文版本等新功能

2019独角兽企业重金招聘Python工程师标准>>> 日志分析软件 secilog 1.17发布&#xff0c;增加了英文版本&#xff0c;对日志导入增加了日志机器ip和日志机器名&#xff0c;或者日志ip和日志域名的关系。上篇文章1.16&#xff0c;有兴趣可以了解一下。本次升级主要增…

用clipboard.js实现纯JS复制文本到剪切板

以前很多人都是用ZeroClipboard.js来实现网页复制内容&#xff0c;火端也是用它。ZeroClipboard是利用flash来实现的&#xff0c;ZeroClipboard兼容性很好&#xff0c;但是由于现在越来越多的浏览器不支持flash&#xff0c;导致一些没法正常使用了。 今天火端开始使用clipboard…

vbs获取程序窗体句柄_PyQt5 GUI程序的基本框架

本节先通过一个简单的示例程序介绍PyQt5 GUI应用程序的基本框架。启动Python自带的编程和交互式环境IDLE&#xff0c;点击“File”→“New File”菜单项&#xff0c;打开一个文件编辑窗口&#xff0c;在此窗口中输入下面的程序&#xff0c;并保存为文件demo2_1Hello.py&#xf…

【学神】1-4 用户及用户组管理

用户及用户组管理本节所述内容&#xff1a;用户和组的相关配置文件管理用户和组 进入单用户模式找回root身份一、用户和组的相关配置文件1.用户的分类&#xff08;1&#xff09;根据帐号的位置&#xff1a;本地帐号、远程&#xff08;域&#xff09;帐号、LDAP&…

阿里REDIS优化

转载于:https://www.cnblogs.com/isoftware/p/3745956.html

vb子程序未定义怎么改怎么办_煤粉输送不畅、秤不稳怎么办?多家企业这样改!...

摘要: CWF型煤粉转子喂料系统优点在于运行稳定、精度高&#xff0c;一致以来受到用户的青睐&#xff0c;但其对煤粉要求也高&#xff0c;尤其是水分含量&#xff0c;直接影响给料的稳定性和受控性。各种非正常因素对测控的影响较大,容易造成下料不畅、波动等现象&#xff0c;下…

SQL Server实现读写分离提高系统并发

转自&#xff1a;http://www.canway.net/Lists/CanwayOriginalArticels/DispForm.aspx?ID666 在一些大型的网站或者应用中&#xff0c;单台的SQL Server 服务器可能难以支撑非常大的访问压力。很多人在这时候&#xff0c;第一个想到的就是一个解决性能问题的利器——负载均衡。…

php如何获取网址中的参数

https://zhidao.baidu.com/question/140978452.html 比如有一个网址为 http://域名/goods.php?u59&id24#pinglun 我想得到这个id值 可以用正则,也可以用php函数解析到数组中 用正则可以这样 preg_match(/id(\d)/,$_SERVER["REQUEST_URI"],$m);//$_SERVER 这…

.net core 引用jar_Python一键转Jar包,Java调用Python新姿势!

粉丝朋友们&#xff0c;不知道大家看故事看腻了没&#xff08;要是没腻可一定留言告诉我^_^&#xff09;&#xff0c;今天这篇文章换换口味&#xff0c;正经的来写写技术文。言归正传&#xff0c;咱们开始吧&#xff01;今天的这篇文章&#xff0c;聊一个轩辕君之前工作中遇到的…

PHP版本的区别

2019独角兽企业重金招聘Python工程师标准>>> 以为这个已经写过了&#xff0c;发现没有&#xff0c;赶紧补充下。 PHP的版本&#xff0c;自从进入5以后&#xff0c;发布新版本速度明显提升很多&#xff0c;从PHP5.2开始&#xff0c;5.3 、5.4 、5.5&#xff0c;就快要…

1515 跳 - Wikioi

题目描述 Description邪教喜欢在各种各样空间内跳。现在&#xff0c;邪教来到了一个二维平面。在这个平面内&#xff0c;如果邪教当前跳到了(x,y)&#xff0c;那么他下一步可以选择跳到以下4个点&#xff1a;(x-1,y), (x1,y), (x,y-1), (x,y1)。而每当邪教到达一个点&#xff0…

快速格式化的DOS命令是什么?

https://zhidao.baidu.com/question/3269005.html Dos下的format命令是用来进行格式化的。 FORMAT A:或c:, d:等等&#xff0c;后面可以加一些参数 比如FORMAT A: /S 这是格式化并追加系统。也就是制作一个简单的启动盘。 如果给硬盘进行格式化&#xff08;重装系统前的准备工…

ADT-bundle

eclipse 弹出 Version 1.4.2_03 of the JVM not suitable for this product.Version1.6or geeater is requir 原因jdk版本过低&#xff0c;需更换高版本 ADT-bundle-linux-X86 解压后有两个文件夹eclipse 和sdk 注意&#xff1a;adb命令在platform-tools下 解压后还需修改sdk的…

合并两个有序链表算法(leetcode第21题)

题目描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a;输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a;输入&#xff1a;l1 [], l2 [] 输…

修改maven本地仓库位置

2019独角兽企业重金招聘Python工程师标准>>> 首先需要安装好&#xff0c;假设安装位置在&#xff1a;D:\****\maven\apache-maven-3.3.3修改本地仓库位置&#xff0c;打开配置文件&#xff1a;D:\****\maven\apache-maven-3.3.3\conf\settings.xml<!-- localRepo…

iOS sqlite

iOS sqlite数据库操作。步骤是&#xff1a; 先加入sqlite开发库libsqlite3.dylib&#xff0c; 新建或打开数据库&#xff0c; 创建数据表&#xff0c; 插入数据&#xff0c; 查询数据并打印 1、新建项目sqliteDemo,添加使用sqlite的库libsqlite3.dylib 2、sqlite 的方法 sqlite…

ad如何设置pcb板子形状_手把手教你在PCB上添加泪滴

泪滴(Teardrops)在PCB电路板设计中&#xff0c;为了让焊盘更坚固&#xff0c;防止机械制板时焊盘与导线之间断开&#xff0c;常在焊盘和导线之间用铜膜布置一个过渡区&#xff0c;形状像泪滴&#xff0c;故常称做补泪滴&#xff08;Teardrops&#xff09;。泪滴的作用避免电路板…

华为云hcip认证试题_首信AAA认证计费系统通过华为云兼容性认证,成为华为认证级ISV伙伴...

点击上方“蓝字”关注我们首信AAA认证计费系统软件3.0在2020年9月24日通过华为云Stack 6.5(鲲鹏)的兼容性测试&#xff0c;最终获得华为技术认证书及HUAWEI COMPATEBLE相关认证徽标使用权。同时&#xff0c;首信科技获得华为认证级ISV伙伴认证证书。本次获得的产品兼容性认证及…

Netty4.x中文教程系列(二) Hello World !

在中国程序界。我们都是学着Hello World !慢慢成长起来的。逐渐从一无所知到熟悉精通的。 第二章就从Hello World 开始讲述Netty的中文教程。 首先创建一个Java项目。引入一个Netty 框架的包。这个步骤我在本系列教程的后面就不在重复了。 先上一张我示例的项目工程图给大家看一…