2011-12-19 8 views
23

$ wpdb-> सम्मिलित कॉल में MySQL NOW() का उपयोग करने की कोई संभावना है?

जब मैं निम्नलिखित कोड का उपयोग करता हूं, अब() काम नहीं कर रहा है।

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

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

बस 'तारीख' ('वाई-एम-डी एच: आई: एस') ' – ceejayoz

+0

मैंने उस बारे में सोचा और इसे भी आजमाया। यह काम करता है, लेकिन मुझे जीएमटी में समय मिलता है और यह समय नहीं होना चाहिए। अब() सही काम करता है ... – chris

उत्तर

60

मेरा मानना ​​है कि विहित दृष्टिकोण एक mysql टाइमस्टैम्प संगत प्रारूप निर्दिष्ट करने के लिए गुजर यह mysql 'पहले पैरामीटर के रूप वर्डप्रेस current_time() समारोह का उपयोग करने के लिए है (वैकल्पिक यूनिक्स टाइमस्टैम्प प्रारूप है) और स्थानीय समय निर्दिष्ट करने के लिए दूसरा पैरामीटर (डिफ़ॉल्ट 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

ठीक है, 'वर्तमान_टाइम (' mysql ')' पोस्ट या पृष्ठों को सहेजते समय WP भी आंतरिक रूप से उपयोग करता है। – Geert

+8

@ कोडरबीबी 'current'time 'के लिए दूसरे पैरामीटर के रूप में' 1' या 'true' पास करने के लिए यूटीसी/जीएमटी देता है, डिफ़ॉल्ट ब्लॉग का स्थानीय समय होता है। – Parham

0

वर्तमान में यह अभी भी है कि आप NOW() आसानी से वर्डप्रेस $wpdb वर्ग के भीतर $wpdb->insert() विधि का उपयोग कर की तरह इन एसक्यूएल कार्यों पारित कर सकते हैं स्पष्ट नहीं है।

एक वर्ग $wpdb वर्ग का विस्तार करने के लेखन की कमी है, सबसे सीधा रास्ता मैं देख सकता हूँ $wpdb->query() विधि का उपयोग करें और कुछ कोड लिखने के लिए एक SQL स्ट्रिंग के लिए अपनी $data सरणी परिवर्तित करने के लिए विधि के लिए पारित करने के लिए है।

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

अधिक यहाँ: http://codex.wordpress.org/Class_Reference/wpdb

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

और जब आप अपने प्रश्न "निर्मित" चलाने डिफ़ॉल्ट मान लेगा, यह अब() के बराबर होगा, आपने देखा होगा कि मैंने "आईडी" छोड़ा है और साथ ही इसे अपना डिफ़ॉल्ट मान भी मिलेगा, मुझे लगता है कि यह स्वतः बढ़ी हुई फ़ील्ड है।

-3

यह एक पुराने विषय है, लेकिन मैं() SQL कथन के बाहर अब प्रयोग करने के लिए एक मूर्खतापूर्ण समाधान मिल गया है और यह काम करता है:

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

आपका स्वागत है।

संबंधित मुद्दे