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 \;} 任何想法?

+0

我想你错过了错误信息。数据库返回什么样的错误? – 2009-06-30 09:14:09

+0

你可以包含错误信息吗? – jerryjvl 2009-06-30 09:14:46

+0

它是哪个数据库产品? – 2009-06-30 09:16:48

(此答案演变为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;}');