Функция Wordpress dbDelta не может выполнить мой запрос - PullRequest
0 голосов
/ 30 июня 2009

Я пытался убежать от всех персонажей, но это не сработало. Мне нужно вставить эту строку специально. Кто-нибудь может сказать мне, что мне не хватает? Остальные 4 оператора вставки работают нормально. Ниже приведен полный код:

$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 \;} Есть идеи?

Ответы [ 2 ]

5 голосов
/ 30 июня 2009

(Этот ответ эволюционировал, поскольку ОП предоставил больше кода. Это последний, упрощенный ответ!)

Функция wordpress dbDelta взрывает строку, заданную для ';', которая находится внутри вашего JSON. Что вам нужно сделать, это разделить ваши запросы в массив, и вместо этого передать их в dbDelta.

$sql1=array();
$sql1[]="insert into....";
$sql1[]="insert into....";

dbDelta($sql1);
0 голосов
/ 30 июня 2009

Скорее всего, вам нужно экранировать символы \ с другим \ - это необходимо, потому что \' позволит вам вставить одну кавычку.

INSERT INTO `wp_usermeta`
VALUES (NULL, $user_id, 'wp_capabilities', 'a:1:{s:10:\\"subscriber\\";b:1;}');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...