2014-06-22 1 views
0

Wordpress에서 시간 시스템으로 작업하고 사용자 정의 테이블에 삽입 할 때 wp 삽입과 관련하여 이상한 문제가 발생합니다.wpdb-> prepare()를 사용하여 사용자 정의 wp 테이블에 삽입

나는 기능을 확인하기 위해 필요에 따라 적절하게 발사되는 wp_users 테이블에 업데이트 쿼리 기능을 테스트 한 내 functions.php

function clock_in() { 

if (isset($_POST['punch-in']) && '1' == $_POST['punch-in']) { 

    $user_id = get_current_user_id(); 

    global $wpdb; 
    $wpdb->query($wpdb->prepare(
        " 
         INSERT INTO $wpdb->wp_diss_users_sessions 
         (session_id,session_begin) 
         VALUES (%d, %s) 
        ", 
         $user_id,'test' 

)); 

에 다음 함수를 실행하고 있습니다.

다음과 같이 내가 받고 오전 오류는 다음과 같습니다

WordPress database error: [You have an error in your SQL syntax; 
check the manual that  corresponds to your MySQL server version 
for the right syntax to use near 
'(session_id,session_begin) VALUES (2, 'test')' at line 2] 
INSERT INTO (session_id,session_begin) VALUES (2, 'test') 

내 표는 같은 설계 :

[session_id] - INT(11) PK NN 
[session_begin] - VARCHAR(45) 

내가 가장 좋은 방법은 내가 모든 구축을 위해 노력하고 준비를 사용하는 것입니다 이해 내 쿼리를 적절하게. 나는 $ wpdb-> wp_diss_users_sessions = 내 사용자 정의 테이블을 조사하는 올바른 구문을 믿는다. 어쩌면 나는 단순한 것을 간과 할 것이지만 오늘 밤에 머리가 아파요.

덕분에 모든

+0

쿼리에 테이블 이름이 없습니다. –

+0

당신은 이것을 읽을 수도 있습니다 : http://wordpress.org/support/topic/using-wpdb-gt-to-access-a-custom-table 기본적으로 같은 문제입니다. –

답변

1

당신이 당신의 쿼리에 테이블 이름이 없기 때문에 당신이 오류를 얻을 :

INSERT INTO (session_id,session_begin) VALUES (2, 'test') 
      ^here should be a table name 

그냥 $wpdb->wp_diss_users_sessions가 작동하지 않습니다 사용하여 테이블 이름이 내부 마술 나타나지 않습니다를 wpdb 객체. 당신이 직접 거기에 보관해야합니다. 당신이 기능이 배치하면

$wpdb->myplugintable = $table_prefix . 'myplugintable'; 

하기는 global 키워드의 범위 내에서 $table_prefix을 당겨하는 것을 잊지 마세요 :

this thread in the WordPress support forum 플러그인/테마의 기능이 추가하는 것이 좋습니다 .

나중에 원하는 방식으로 테이블 이름에 액세스 할 수 있습니다.

관련 문제