GVKun编程网logo

使用wordpress的$wpdb类读mysql数据库做ajax时出现的问题该如何解决(wordpress连接mysql数据库)

14

关于使用wordpress的$wpdb类读mysql数据库做ajax时出现的问题该如何解决和wordpress连接mysql数据库的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于javas

关于使用wordpress的$wpdb类读mysql数据库做ajax时出现的问题该如何解决wordpress连接mysql数据库的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于javascript – WordPress使用WordPress将ajax值传递给特定页面、mysql – 为什么这个wordpress代码抛出一个空的WPDB错误?、mysql升级到5.7时,wordpress导数据报错1067的问题、MYSQL数据库介绍使用WordPress时10个常用的MySQL查询等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

使用wordpress的$wpdb类读mysql数据库做ajax时出现的问题该如何解决(wordpress连接mysql数据库)

使用wordpress的$wpdb类读mysql数据库做ajax时出现的问题该如何解决(wordpress连接mysql数据库)

无聊做了个www.jiazhuangma.com,技术不过关写不好后台,就想直接读wordpress里的数据。做ajax读后台数据时在网上随便搜了一段代码使用wordpress $wpdb类读MysqL数据库,就是这么一随便,搜到了别人的去头去尾的code,开始了我的改错之旅。

主要问题有:

1,non-object

2,json中汉字,/被转码

3,chrome可以正常访问PHP文件,ie显示http 404,ajax时头部显示404,但是响应正文正确,是我想要的json。

先贴上网上搜到的代码:

<?PHP
global $wpdb;
$a = $wpdb->get_results(“SELECT ID,post_title FROM wp_posts ″);
echo json_encode($a );
?>

这时会报错,non-object;

网上有人说可以添加require_once(‘wp-blog-header.PHP');那么恭喜你中奖了,你会发现chrome可以正常访问PHP文件,ie显示http 404,ajax时头部显示404,但是响应正文正确。

修改为require_once(‘wp-config.php');后正常,

这时得到的json是转码后的需要将echo json_encode($a );

修改为echo str_replace(“\\/”,“/”,json_encode($a,JSON_UnesCAPED_UNICODE ));结果才正确

最终结果:

<?PHP
require_once(‘wp-config.php');
global $wpdb;
$a = $wpdb->get_results(“SELECT wp_posts.ID,wp_posts.post_title,wp_posts.guid FROM wp_posts inner join wp_term_relationships on wp_term_relationships.object_id=wp_posts.ID where wp_term_relationships.term_taxonomy_id=3 ORDER BY wp_term_relationships.object_id DESC LIMIT 5″);
echo str_replace(“\\/”,JSON_UnesCAPED_UNICODE ));
?>

以上就是小编给大家介绍的使用wordpress的$wpdb类读MysqL数据库做ajax时出现的问题该如何解决,希望对大家有所帮助。

javascript – WordPress使用WordPress将ajax值传递给特定页面

javascript – WordPress使用WordPress将ajax值传递给特定页面

我想将变量传递给特定页面.我找到了一个简单的例子,解释了如何在wordpress中使用ajax.

JavaScript的:

jQuery(document).ready(function($) {

// We'll pass this variable to the PHP function example_ajax_request
var fruit = 'Banana';

// This does the ajax request
$.ajax({
    url: ajaxurl,
    data: {
        'action':'example_ajax_request',
        'fruit' : fruit
    },
    success:function(data) {
        // This outputs the result of the ajax request
        console.log(data);
    },
    error: function(errorThrown){
        console.log(errorThrown);
    }
});  

});

要在functions.PHP中插入的PHP片段

function example_ajax_request() {

// The $_REQUEST contains all the data sent via ajax
if ( isset($_REQUEST) ) {

    $fruit = $_REQUEST['fruit'];

    // Let's take the data that was sent and do something with it
    if ( $fruit == 'Banana' ) {
        $fruit = 'Apple';
    }

    // Now we'll return it to the javascript function
    // Anything outputted will be returned in the response
    echo $fruit;

    // If you're debugging, it might be useful to see what was sent in the $_REQUEST
    // print_r($_REQUEST);

}

// Always die in functions echoing ajax content
  die();
 }

add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' );


   wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajax_url' =>   admin_url( 'admin-ajax.PHP' ) ) );

不幸的是我无法传递变量.我检查了代码,我收到了这个错误:

Error: ajax_object is not defined

您是否知道另一种获得相同结果的方法?

解决方法:

你很近,但有一些小事丢失了……

我在评论中的意思是,你需要在两者中使用’ajax-script’这样使用它:

add_action('wp_enqueue_scripts', 'add_js_scripts'); 
add_js_scripts(){
    wp_enqueue_script( 'ajax-script', get_template_directory_uri().'/js/script.js', array('jquery'), '1.0', true );
    wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajaxurl' =>   admin_url( 'admin-ajax.PHP' ) ) );
}

将$_REQUEST更改为$_POST:

function example_ajax_request() {

    // The $_REQUEST contains all the data sent via ajax
    if ( isset($_POST) ) {

        $fruit = $_POST['fruit'];

        // Let's take the data that was sent and do something with it
        if ( $fruit == 'Banana' ) {
            $fruit = 'Apple';
        }

        // Now we'll return it to the javascript function
        // Anything outputted will be returned in the response
        echo $fruit;

        // If you're debugging, it might be useful to see what was sent in the $_POST
        // print_r($_POST);

    }

    // Always die in functions echoing ajax content
      die();

 }

添加了add_action(‘wp_ajax_nopriv_ …):

add_action( 'wp_ajax_nopriv_example_ajax_request', 'example_ajax_request' ); // <= this one
add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' );

对于你的jQuery脚本script.js文件,有两件重要的遗漏:

jQuery(document).ready(function($) {

    /* We'll pass this variable to the PHP function example_ajax_request */
    var fruit = 'Banana';

    /* This does the ajax request */
    $.ajax({
        url: ajax_object.ajaxurl, /* <====== missing here */
        type : 'post', /*    <========== and missing here */
        data: {
            'action':'example_ajax_request',
            'fruit' : fruit
        },
        success:function(data) {
            /* This outputs the result of the ajax request */
            console.log(data);
        },
        error: function(errorThrown){
            console.log(errorThrown);
        }
    });  

});

这应该现在工作……

参考文献:

> Using AJAX With PHP on Your WordPress Site Without a Plugin
> How to use Ajax with your WordPress Plugin or Theme?

mysql – 为什么这个wordpress代码抛出一个空的WPDB错误?

mysql – 为什么这个wordpress代码抛出一个空的WPDB错误?

我正在写一个feed reader plugin for wordpress.我看到一个DB错误,我无法弄清楚.
首先是我create a table called user_entries.
然后我把sample entry into that table.
当I try to delete an entry,我的调试日志中出现了一个非常奇怪的错误.还没有外键,db上没有索引等.

[02-May-2012 11:21:52] wordpress database error for query
DELETE
FROM wp_wpRSS_user_entries
WHERE owner_uid = 2
AND Feed_id = 2; made by do_action, call_user_func_array, wpRSS_unsubscribe_Feed, WpRSSFeeds->remove

那么错误是什么?它只是空白.这看起来不像复杂的sql,它在PHPmySQL查询窗口中工作正常.我现在不确定下一步要做什么,我希望大家能够取消订阅Feed!

解决方法:

弄清楚了!即使没有错误,$wpdb-> print_error()也会输出错误字符串.所以你必须明确检查查询是否返回false – 不是0.

    if(false === $wpdb->query($sql)){
      $resp->uf_error = $wpdb->print_error();
    }

mysql升级到5.7时,wordpress导数据报错1067的问题

mysql升级到5.7时,wordpress导数据报错1067的问题

最近把mysql升级到5.7了,wordpress导数据报错

Invalid default value for ''comment_date''

原因出在类似这样的语句

DROP TABLE IF EXISTS `wp_comments`;
CREATE TABLE `wp_comments`  (
  `comment_ID` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `comment_post_ID` bigint(20) UNSIGNED NOT NULL DEFAULT 0,
  `comment_author` tinytext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `comment_author_email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '''',
  `comment_author_url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '''',
  `comment_author_IP` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '''',
  `comment_date` datetime(0) NOT NULL DEFAULT ''0000-00-00 00:00:00'',
  `comment_date_gmt` datetime(0) NOT NULL DEFAULT ''0000-00-00 00:00:00'',
  `comment_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `comment_karma` int(11) NOT NULL DEFAULT 0,
  `comment_approved` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT ''1'',
  `comment_agent` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '''',
  `comment_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '''',
  `comment_parent` bigint(20) UNSIGNED NOT NULL DEFAULT 0,
  `user_id` bigint(20) UNSIGNED NOT NULL DEFAULT 0,
  PRIMARY KEY (`comment_ID`) USING BTREE,
  INDEX `comment_post_ID`(`comment_post_ID`) USING BTREE,
  INDEX `comment_approved_date_gmt`(`comment_approved`, `comment_date_gmt`) USING BTREE,
  INDEX `comment_date_gmt`(`comment_date_gmt`) USING BTREE,
  INDEX `comment_parent`(`comment_parent`) USING BTREE,
  INDEX `comment_author_email`(`comment_author_email`(10)) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_520_ci ROW_FORMAT = Dynamic;

这种报错多是你mysql升级到5.7而引起的默认值不兼容的问题。看看你的字段名是什么,我的是时间字段,类型是datetime。想到可能是类型的默认值被限制了,查看sql_mode。果然:NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数限制时间不能为0

查看sql_mode

mysql> show variables like ''sql_mode'';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

临时修改:

mysql> set session
 -> sql_mode=''ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>

永久修改:

可以直接修改my.cnf文件

例如: vim /etc/my.cnf

Windows环境下修改mysql.ini配置文件就解决了~

在[mysqld]下面添加如下列:

sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

ok问题解决,现在你导入或者创建表时看看!

以上就是解决mysql升级到5.7时wordpress导数据报错1067问题的详细内容,更多关于mysql导入数据库报错1067 的资料请关注其它相关文章!

您可能感兴趣的文章:
  • mysql如何利用Navicat导出和导入数据库的方法
  • MySQL命令行导出导入数据库实例详解
  • wampserver下mysql导入数据库的步骤
  • MySQL命令行导出与导入数据库
  • 修改php.ini实现Mysql导入数据库文件最大限制的修改方法
  • windows无法启动MySQL服务报错1067的解决方法
  • mysql服务无法启动报错误1067解决方法(mysql启动错误1067 )

MYSQL数据库介绍使用WordPress时10个常用的MySQL查询

MYSQL数据库介绍使用WordPress时10个常用的MySQL查询

《MysqL数据库介绍使用wordpress时10个常用的MySQL查询》要点:
本文介绍了MysqL数据库介绍使用wordpress时10个常用的MySQL查询,希望对您有用。如果有疑问,可以联系我们。

MysqL应用大多数使用 wordpress 搭建的网站,其后台都是 MysqL 数据库,经常我们必要定制 wordpress 的功能,这里我们列表 10 个最有用的 wordpress 的数据库查询,你必要一个数据库的管理工具,例如  PHPMyAdmin 或者  Navicat 等来执行这些 sql 语句.

MysqL应用1. 将所有文件的作者改为另外一个用户

MysqL应用在修改之前,你先要知道两个不同用户的 ID,你可以在 WP 后台的 Author & User 页面中找到这个 ID,或者在查看用户信息时点击用户名的链接,地址栏中出现的 user_id 对应的值便是用户ID,然后运行以下命令进行修改:
 

MysqL应用
UPDATE wp_posts SET post_author = 'new-author-id' WHERE post_author = 'old-author-id';

MysqL应用2. 改动默认管理员 admin 的名称

MysqL应用WP 默认安装会创立一个名为 admin 的管理员帐号,你可以修改这个帐号的名称:
 

MysqL应用
UPDATE wp_users SET user_login = 'Your New Username' WHERE user_login = 'Admin';

MysqL应用3. 删除修订版 Revision

MysqL应用文章修订版浪费了大量的存储资源,当你有数以千计的文章时,这个数值更加惊人,这会影响程序执行的性能、数据获取,降低页面加载时间,解决的方法就是删除这些无用的修订版信息:
 

MysqL应用
DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postMeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

MysqL应用4. 变动 GUID

MysqL应用在进行博客移植时,你必要修复 wp_posts 表中的 URL 里的 GUID 信息,这是非常关键的,因为 GUID 用于将 URL 路径与文章信息对应起来:
 

MysqL应用
UPDATE wp_posts SET guid = REPLACE (guid,'http://www.oldsiteurl.com','http://www.newsiteurl.com');

MysqL应用5. 变动 Siteurl & Homeurl

MysqL应用当你将网站从当地移到真正的服务器,网站并无法使用,因为完整的路径依然指向 localhost,你需要修改网站的 URL 和首页 URL:
 

MysqL应用
UPDATE wp_options SET option_value = replace(option_value,'http://www.newsiteurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';

MysqL应用6. 删除 Pingback 数据

MysqL应用受欢迎的文章会收到年夜量的 pingback 信息,这会让数据库的体积庞年夜,可以使用下面 sql 语句删除:
 

MysqL应用
DELETE FROM wp_comments WHERE comment_type = 'pingback';

MysqL应用7. 变动图片路径

MysqL应用如果你使用 CDN 来处理图片拜访,在创建完 CNAME 记录后,你可通过下面查询来修改所有图像的路径:
 

MysqL应用
UPDATE wp_posts SET post_content = REPLACE (post_content,'src="http://www.oldsiteurl.com','src="http://yourcdn.newsiteurl.com');

MysqL应用你还必要通过下面语句来修改图片附件的 GUID 信息:
 

MysqL应用
UPDATE wp_posts SET guid = REPLACE (guid,'http://yourcdn.newsiteurl.com') WHERE post_type = 'attachment';

MysqL应用8. 标出无用的标签

MysqL应用删除文章时并不会保证删除对应的标签,你必需手工来做这个事情,下面这个查询可让你找出那些没有用到的标签:
 

MysqL应用
SELECT * From wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;

MysqL应用9. 重置暗码

MysqL应用如果想重置登录暗码,如果嫌麻烦可直接用下面的 sql 语句来完成:
 

MysqL应用
UPDATE wp_users SET user_pass = MD5( 'new_password' ) WHERE user_login = 'your-username';

MysqL应用10. 更新文章元数据

MysqL应用如果你的每篇文章都坚持了特别的 URL,可使用下面语句来处理:
 

MysqL应用
UPDATE wp_postMeta SET Meta_value = REPLACE (Meta_value,'http://www.newsiteurl.com');

MysqL应用在做任何改动之前,我们建议你对数据库做好备份后再操作.

《MysqL数据库介绍使用wordpress时10个常用的MySQL查询》是否对您有启发,欢迎查看更多与《MysqL数据库介绍使用wordpress时10个常用的MySQL查询》相关教程,学精学透。小编PHP学院为您提供精彩教程。

今天关于使用wordpress的$wpdb类读mysql数据库做ajax时出现的问题该如何解决wordpress连接mysql数据库的讲解已经结束,谢谢您的阅读,如果想了解更多关于javascript – WordPress使用WordPress将ajax值传递给特定页面、mysql – 为什么这个wordpress代码抛出一个空的WPDB错误?、mysql升级到5.7时,wordpress导数据报错1067的问题、MYSQL数据库介绍使用WordPress时10个常用的MySQL查询的相关知识,请在本站搜索。

本文标签: