2009-06-30 3 views
0

J'ai essayé d'échapper tous les caractères et cela ne fonctionne pas. J'ai besoin d'insérer cette chaîne spécifiquement. Quelqu'un peut-il me dire ce que je manque? Les 4 autres instructions insert fonctionnent bien. Ci-dessous le code complet:La fonction dbDelta Wordpress ne parvient pas à exécuter ma requête

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

Merci

MISE À JOUR

Le problème réside dans les points-virgules dans la chaîne. J'ai essayé d'échapper à ceux-ci de façon normale() mais cela ne semble pas fonctionner ici. La chaîne ressemble maintenant à: 1: {s: 10: \ "abonné \" \; b: 1 \;} Des idées?

+0

Je pense que le message d'erreur est manquant. Quel type d'erreur renvoie la base de données? –

+0

Pouvez-vous inclure le message d'erreur? – jerryjvl

+0

De quel produit de base de données s'agit-il? –

Répondre

5

(Cette réponse évolué à mesure que l'OP a fourni plus de code Ceci est la finale, réponse simplifiée.!)

La fonction wordpress dbDelta explose la chaîne elle est donnée sur « ; », qui est à l'intérieur de votre JSON. Ce que vous devez faire est de séparer vos requêtes dans un tableau, et de passer cela à dbDelta à la place.

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

dbDelta($sql1); 
+0

Merci pour les heads-up mais c'est une instruction PHP mysql à l'intérieur donc $ user_id est valide. :) – Drew

+0

Encore, montrez-nous le code réel. Vous faites une hypothèse. –

+0

code complet ajouté. J'utilise $ user_id dans les quatre instructions avant cela et ils insèrent bien. merci pour votre temps – Drew

-1

Vous avez probablement besoin d'échapper aux \ personnages avec un autre \ - cela est nécessaire, car \' vous permettra d'insérer une seule citation.

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

l'échappement de l'OP était bien –

Questions connexes