Wordpress dbDelta函数无法执行我的查询
问题描述:
我试图转义所有的字符,并且不起作用。我需要特别插入这个字符串。任何人都可以告诉我我错过了什么吗?其他4个插入语句正常工作。下面是完整的代码:Wordpress dbDelta函数无法执行我的查询
$user_id = mysql_insert_id();
$sql1 = "INSERT INTO `wp_usermeta` VALUES (NULL, $user_id, 'nickname', '$email');
INSERT INTO `wp_usermeta` VALUES (NULL, $user_id, 'rich_editing', 'true');
INSERT INTO `wp_usermeta` VALUES (NULL, $user_id, 'comment_shortcuts', 'false');
INSERT INTO `wp_usermeta` VALUES (NULL, $user_id, 'admin_color', 'fresh');";
$sql1 .= "INSERT INTO `wp_usermeta` VALUES (NULL, $user_id, 'wp_capabilities', 'a:1:{s:10:\"subscriber\";b:1;}');";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql1);
感谢
UPDATE
问题在于字符串中的分号。我试图用正常的方式逃避这些(),但在这里似乎不起作用。该字符串现在看起来像:1:{s:10:\“subscriber \”\; b:1 \;} 任何想法?
答
(此答案演变为OP提供了更多的代码这是最后的,简化的答案。!)
WordPress的dbDelta功能爆炸它是在给定字符串“;”,这是在你的JSON里面。你需要做的是将你的查询分隔成一个数组,然后把它传递给dbDelta。
$sql1=array();
$sql1[]="insert into....";
$sql1[]="insert into....";
dbDelta($sql1);
答
您很可能需要将另一个\
转换成\
字符 - 这是必要的,因为\'
会让您插入单引号。
INSERT INTO `wp_usermeta`
VALUES (NULL, $user_id, 'wp_capabilities', 'a:1:{s:10:\\"subscriber\\";b:1;}');
我想你错过了错误信息。数据库返回什么样的错误? – 2009-06-30 09:14:09
你可以包含错误信息吗? – jerryjvl 2009-06-30 09:14:46
它是哪个数据库产品? – 2009-06-30 09:16:48