it-swarm-pt.tech

Wordpress - $ wpdb-> insert - MySQL NOW ()

existe alguma possibilidade de usar o MySQL NOW () na chamada $ wpdb-> insert?

Quando eu uso o código a seguir, NOW () não está funcionando.

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

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

Eu acredito que a abordagem canônica é usar a função WordPress current_time() _ passando o 'mysql' como o primeiro parâmetro para especificar um formato compatível com timestamp mysql (a alternativa é o formato de timestamp UNIX ) e '1' como o segundo parâmetro para especificar a hora local (o padrão é GMT), assim:

$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) gera 2012-07-18 12:51:13.

Mais aqui: http://codex.wordpress.org/Function_Reference/current_time

71
coderabbi

Como o Word "criado" significa que você só precisa do "NOW ()", data e hora atuais, na inserção. Você pode alterar o campo criado

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

e não use o campo criado na consulta, para que sua nova consulta tenha a aparência de ..

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

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

e quando você executa sua consulta "criada" terá o valor padrão, será igual a NOW (), você deve ter notado que eu omiti "id" e também obterá seu valor padrão, presumo que seja automático campo incrementado.

2
user2808180

No momento, ainda não está claro se você pode passar essas funções SQL como NOW () facilmente usando o método $wpdb->insert() dentro da classe WordPress $wpdb.

Antes de escrever uma classe para estender a classe $wpdb, A maneira mais direta que posso ver é usar o método $wpdb->query() e escrever algum código para converter sua matriz $data Em uma sequência SQL para passar para o método.

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

Mais aqui: http://codex.wordpress.org/Class_Reference/wpdb

0
paperclip