2009-06-30 2 views
0

모든 문자를 이스케이프 처리했지만 작동하지 않습니다. 이 문자열을 특별히 삽입해야합니다. 아무도 내가 누락 된 걸 말해 줄 수 있니? 나머지 4 개의 insert 문은 정상적으로 작동합니다.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

dbDelta 기능이 위에 주어진 문자열 폭발 워드 프레스 (.하세요 OP 더 코드 규정이 답변이 최종 간략화 대답 진화) ','인 귀하의 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의 이스케이프 처리는 괜찮 았음 –

관련 문제