2009-06-30 10 views
0

すべての文字をエスケープしようとしましたが動作しません。この文字列を具体的に挿入する必要があります。私が何が欠けているか教えてもらえますか?他の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

エラーメッセージが表示されません。データベースがどのようなエラーを返すのですか? –

+0

エラーメッセージを挿入できますか? – jerryjvl

+0

このデータベースの製品はですか? –

答えて

5

(。!OPは、より多くのコードを提供し、この答えはこれが最終的な、簡略化答えは進化)

ワードプレスdbDelta機能は、それが上に与えられた文字列を爆発「;」でありますあなたのJSONの中で。あなたがしなければならないことは、クエリを配列に分割し、代わりにdbDeltaに渡すことです。

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

dbDelta($sql1); 
+0

ヘッドアップに感謝しますが、これはPHPのmysqlステートメントの中にあり、$ user_idは有効です。 :) – Drew

+0

まだ、私たちに実際のコードを見せてください。あなたは前提をしています。 –

+0

フルコードが追加されました。私は前に4つのステートメントで$ user_idを使用しています。お返事ありがとうございます – Drew

-1

\文字を別の文字で\でエスケープする必要があります。\'で一重引用符を挿入できるため、これが必要です。

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

OPのエスケープ処理は問題ありませんでした –

関連する問題