2011-12-19 4 views
23

MySQL NOW()를 $ wpdb-> insert 호출에 사용할 수 있습니까?

다음 코드를 사용하면 NOW()가 작동하지 않습니다. 현재

$data = array(
     'id' => NULL, 
     'order' => serialize($_POST['data']['Order']), 
     'created' => NOW(), 
     'user_id' => $current_user->ID 
    ); 

$wpdb->insert(ORDERS_TABLE, (array) $data); 
+0

'date ('Y-m-d H : i : s')' – ceejayoz

+0

나는 그것에 대해 생각하고 그것을 시도했다. 그것은 작동하지만 GMT로 시간을받습니다. NOW()는 작업을 올바르게 처리합니다 ... – chris

답변

60

http://codex.wordpress.org/Class_Reference/wpdb 내가 정식 방법은 MySQL의 타임 스탬프 호환되는 형식을 지정하는 첫 번째 매개 변수로 'mysql을'을 통과하는 워드 프레스 current_time() 기능을 사용하는 것입니다 생각 (대체는 UNIX 타임 스탬프 형식입니다)이 같은 로컬 시간을 지정하는 제 파라미터 (디폴트 GMT이다)로서 '1':

$data = array(
    'id' => NULL, 
    'order' => serialize($_POST['data']['Order']), 
    'created' => current_time('mysql', 1), 
    'user_id' => $current_user->ID 
); 

$wpdb->insert(ORDERS_TABLE, $data); 

current_time('mysql', 1) 출력 2012-07-18 12:51:13. 여기

더 많은 : "만든"단어로 http://codex.wordpress.org/Function_Reference/current_time

+1

'current_time ('mysql ')'은 WP가 게시물이나 페이지를 저장할 때 내부적으로 사용하는 것입니다. – Geert

+8

@coderabbi 'current_time'의 두 번째 매개 변수로 '1'또는 'true'를 전달하면 UTC/GMT가 반환되고 기본값은 블로그의 현지 시간입니다. – Parham

0

이 이제 쉽게 워드 프레스 $wpdb 클래스 내에서 $wpdb->insert() 방법을 사용하여()처럼이 SQL 함수를 전달할 수 있다는 여전히 명확하지 않다. $wpdb 클래스를 확장하는 클래스를 작성하는 짧은

는, 내가 볼 수있는 가장 간단한 방법은 방법에 전달하기 위해 SQL 문자열에 $data 배열을 변환하는 몇 가지 코드를 $wpdb->query() 방법을 사용하여 작성하는 것입니다. 여기

$sql = sprintf( 
    'INSERT INTO table (id, order, created, user_id) VALUES (%d, %d, %s, %d)', 
    $data[id], $data['order'], $data['created'], $data['user_id'] 
); 

$wpdb->update($sql); 

더 :

2

경우에만 삽입에 "NOW()", 현재 날짜와 시간을해야한다는 것을 의미합니다. 당신이 "창조"쿼리를 실행할 때

ALTER TABLE `ORDERS_TABLE` CHANGE `created` `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 

을 만든 필드를 변경할 수 있으며, 모든 쿼리에 필드를 만들어 사용하지 않기 때문에 새 쿼리가 모양을 ..

$data = array(  
    'order' => serialize($_POST['data']['Order']),   
    'user_id' => $current_user->ID 
); 

$wpdb->insert(ORDERS_TABLE, (array) $data); 

및 그것은 NOW()와 같을 것이고, 당신은 "id"를 생략했다는 것을 알았을 것입니다. 디폴트 값을 얻습니다. 자동 증가 된 필드라고 가정합니다.

-3

이 오래된 주제지만, 나는 SQL 문 밖에서() NOW 사용하는 바보 같은 솔루션을 발견하고 작동 :

$mysql_now = $wpdb->get_row("SELECT NOW() as dbNow", ARRAY_A); 
echo $mysql_now['dbNow']; 

당신은 환영합니다.