代码之家  ›  专栏  ›  技术社区  ›  Drew Rich

Wordpress dbDelta函数无法执行我的查询

  •  0
  • Drew Rich  · 技术社区  · 17 年前

    $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);
    

    2 回复  |  直到 17 年前
        1
  •  5
  •   Paul Dixon    17 年前

    (这个答案随着OP提供了更多的代码而演变。这是最终的简化答案!)

    wordpress dbDelta函数会分解它在'上给出的字符串;',它在JSON中。您需要做的是将查询分离到一个数组中,并将其传递给dbDelta。

    $sql1=array();
    $sql1[]="insert into....";
    $sql1[]="insert into....";
    
    dbDelta($sql1);
    
        2
  •  -1
  •   Samir Talwar PruthviRaj Reddy    17 年前

    你很可能需要逃离 \ 角色与另一个 \ -这是必要的,因为 \' 将允许您插入一个引号。

    INSERT INTO `wp_usermeta`
    VALUES (NULL, $user_id, 'wp_capabilities', 'a:1:{s:10:\\"subscriber\\";b:1;}');