关于使用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数据库)
- javascript – WordPress使用WordPress将ajax值传递给特定页面
- mysql – 为什么这个wordpress代码抛出一个空的WPDB错误?
- mysql升级到5.7时,wordpress导数据报错1067的问题
- MYSQL数据库介绍使用WordPress时10个常用的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值传递给特定页面
我想将变量传递给特定页面.我找到了一个简单的例子,解释了如何在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错误?
我正在写一个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导数据报错
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 搭建的网站,其后台都是 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查询的相关知识,请在本站搜索。
本文标签: