美文网首页
wordpress直接操作数据库的方法

wordpress直接操作数据库的方法

作者: jevian | 来源:发表于2017-07-14 13:30 被阅读0次

    wordpress占据全球40%的网站地位,是世界上使用最活跃的内容管理系统(CRM)。学习成本低,社区活跃等特点使他一直成为草根站长最喜爱的内容管理系统。

    wordpress本身由于其强大的功能,让非常多的程序员直接在其之上开发功能强大的系统,比如商城系统,以及一些负责的管理系统。

    但是由于wordpress最初就是定位于博客系统,其数据库结构设计的非常的简单,基本上所有的复杂类型数据都只能已文章的形式展示出来。如果数据量大。wordpress那原本的数据表结构就会显得非常不合理。因此默认的wordpress结构原本也不适合百万级别的大数据管理。

    如果用户想使用wordpress作为框架开发系统,建议复杂的数据类型全部采用自己建立数据库的方式处理,wordpress有完善的数据库函数,下面我就来介绍一下相关的几个函数。

    一、sql语句处理,防止sql注入攻击。

    $sql = $wpdb -> prepare("query",[%d,%d,%s])

    例如:

    $sql = $wpdb -> prepare("SELECT * FROM `user` WHERE `username` = %s AND `password` = %s", $username, $password);

    用这种方式,函数可以判断$username与$password是否是纯参数,不能作为执行语句处理。

    二、获取单一数据,在一般sql语句就只返回一个数值时使用。

    $var = $wpdb -> get_var("query");

    例如:

    $var = $wpdb -> get_var("SELECT count(*) FROM `user`");

    这个函数直接返回值,可以直接使用。

    注:其实get_var并不是仅仅只能用于就返回一个数值的sql语句,而是他默认只返回第一行最左边的元素。如果希望他返回其他元素,可以使用get_var("query", x, y)来实现。

    三、获取一行数据,在一般sql语句就只返回特定对象时使用。

    $sql = $wpdb -> get_row("query", output_type);

    例如:

    $var = $wpdb -> get_row("SELECT * FROM `user` WHERE `userid` = 1", ARRAY_A);

    output_type:三个预定义的常量之一。默认值为OBJECT。

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

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

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

    我通常使用OBJECT或是ARRAY_A,访问方式分别为$var -> username(output_type为OBJECT时)或是$var["username"](output_type为ARRAY_A时)

    注:其实get_row并不是仅仅只能用于就返回一行的sql语句,而是他默认只返回第一行的集合。如果希望他返回其他行,可以使用get_row("query", output_type, y)来实现。

    四、获取一列数据,在一般sql语句就只返回特定属性时使用。

    $sql = $wpdb -> get_col("query");

    例如:

    $var = $wpdb -> get_col("SELECT `age` FROM `user`);

    返回的结果以数值索引数组形式输出,一般通过foreach函数分离,或是直接使用$var[1]这样的方式获取。

    注:其实get_col并不是仅仅只能用于就返回一列的sql语句,而是他默认只返回第一列的集合。如果希望他返回其他列,可以使用get_col("query", x)来实现。

    五、获取多列数据,在一般sql语句就只返回特定属性时使用。

    $sql = $wpdb -> get_results("query", output_type);

    例如:

    $vars = $wpdb -> get_results("SELECT * FROM `user`, ARRAY_A);

    返回的结果以数值索引数组形式包其他形式输出,一般通过foreach函数分离,或是直接使用$var[1]这样的方式获取。获取的对象受第二个参数控制

    output_type:三个预定义的常量之一。默认值为OBJECT。

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

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

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

    我通常使用OBJECT或是ARRAY_A,访问方式分别为$var -> username(output_type为OBJECT时)或是$var["username"](output_type为ARRAY_A时)

    例如

    foreach($vars as $var) {

    echo $var["username"];//output_type是ARRAY_A时

    }

    五、插入新数据

    $id = $wpdb -> insert("table_name", array(), array(%s, %d));

    例如:

    $id = $wpdb -> insert("table_name", array("username" => $username,"password" => $password, "age" => $age), array("%s", "%s", "%d"));

    第一个参数是将要写入的数据以数组形式插入。第二个参数是申明插入的数据类型,同时也有一定的反sql注入式攻击的效果。返回值为新建的那条数据的主键。

    六、更新新数据

    $id = $wpdb -> update("table_name", array(), array(),array(%s, %d), array(%s, %d));

    例如:

    $id = $wpdb -> update("table_name", array("username" => $username, "password" => $password, "age" => $age), array("ID" => $ID), array("%s", "%s", "%d"), array("%d"));

    第一个参数是将要写入的数据以数组形式插入。第二个参数是过滤条件,也就是sql语句中where后的参数。第三个参数是要更新数据的数据类型,第四个参数是过滤条件的数据类型。返回值为更新的那条数据的主键。

    七、删除数据

    $id = $wpdb -> delete("table_name", array(), array(%s, %d));

    例如:

    $id = $wpdb -> update("table_name", array("ID" => $ID), array("%d"));

    第一个参数是过滤条件,也就是sql语句中where后的参数。第二个参数是过滤条件的数据类型。返回值为删除的数目。

    通过上述函数直接对数据库操作,可以大大提高系统的运行速度,让wordpress也适合开发大型系统。

    文章来源:武汉app开发 http://www.worldflying.cn/article-id-15.html

    相关文章

      网友评论

          本文标题:wordpress直接操作数据库的方法

          本文链接:https://www.haomeiwen.com/subject/ogwnhxtx.html