2012-01-05 17 views
7

आप की त्रुटि को कैसे हल करते हैं:गंभीर त्रुटि: अपरिभाषित विधि दिनांक समय के लिए createfromformat कॉल ::()

Fatal error: Call to undefined method DateTime::createfromformat() 

त्रुटि लाइन 35. पर क्या हो रहा है यह वही है मेरी कोड लाइन 31 से 45 पढ़ता है

// check database for necessary updates 

$update = mysql_query("SELECT * FROM rent WHERE colour='#3C0'"); 
while($row_update = mysql_fetch_array($update)) { 
    $datetime_lower = DateTime::createFromFormat('d/m/Y', $min); 
    $datetime_upper = DateTime::createFromFormat('d/m/Y', $max); 
    $datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']); 
    if ($datetime_lower < $datetime_compare && $datetime_upper > $datetime_compare) { 
     // date is between do nothing 
    } else { 
     // date is not between so update 
     $update_result = mysql_query("UPDATE rent SET colour='#F0F0F0' WHERE id=" . $row_update['id'] . " && colour='#3C0'"); 
     mysql_close($update_result); 
    } 
} 

मैं इसे कैसे हल कर सकता हूं?

+0

उस पंक्ति को हटाकर। त्रुटि तब चलेगी। आम तौर पर अपरिभाषित कार्यों को कॉल न करना एक अच्छा विचार है क्योंकि अन्यथा यह हमेशा घातक त्रुटि का परिणाम देगा। शायद आप उस PHP मैनुअल से फ़ंक्शन को लिंक कर सकते हैं जिसे आप कॉल करना चाहते हैं, तो यह स्पष्ट है कि आप क्या करने का प्रयास करते हैं? – hakre

+0

या तो आपने गलती की प्रतिलिपि बनाते समय गलती की है, या इसकी फ़ाइल नहीं है: 'createfromformat! = CreateFromFormat' – KingCrunch

+0

कोड मेरे स्थानीय सर्वर पर ठीक काम करता है हालांकि – methuselah

उत्तर

20

DateTime::createFromFormat() PHP 5.3 में पेश किया गया था। और सबसे अधिक संभावना है कि आप बूढ़े हो। तो - php> = 5.3 स्थापित करें और आप इसे काम करेंगे।

+0

PHP संस्करण 5.2.9 - मैं इसे uk2.net सर्वर पर चला रहा हूं – methuselah

+0

PHP के PHP (PHP <5.3) के पुराने संस्करणों को चलाने वाले सर्वरों के लिए समकक्ष दृष्टिकोण है? – Sam

+0

@ सैम: 'स्ट्रेटोटाइम 'समकक्ष नहीं है, लेकिन – zerkms

5

PHP का कौन सा संस्करण आप चल रहे हैं? PHP के अनुसार, createDateFormat संस्करण> = 5.3.0 में उपलब्ध है।

- संपादित करें

ऐसा लगता है कि अपने कोड दिनांक समय गलत तरीके से उपयोग कर रहा था, में है कि createFromFormat एक वस्तु, न कोई स्ट्रिंग देता है, लेकिन आप) दिनांक समय :: createFromFormat (स्थानांतरित करने के लिए date साथ कॉल में सक्षम होना चाहिए() कहता है।

// PHP >= 5.3.0 
$datetime_lower = DateTime::createFromFormat('d/m/Y', $min); 
$datetime_upper = DateTime::createFromFormat('d/m/Y', $max); 
$datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']); 

// PHP < 5.3.0 
$datetime_lower = date('d/m/Y', $min); 
$datetime_upper = date('d/m/Y', $max); 
$datetime_compare = date('d/m/Y g:i a', $row_update['pDate']); 

हालांकि यह मुझे लगता है, कि अगर आप टाइमस्टैम्प के साथ काम कर रहे हैं, तो आप एक विशिष्ट प्रारूप में बदलने के लिए बिना तुलना ऑप्स कर सकते हैं। यदि आप जिन तिथियों से निपट रहे हैं उनमें से एक टाइमस्टैम्प प्रारूप में नहीं है, तो आप निम्न कार्य कर सकते हैं:

$timestamp = strtotime($yourFormattedDateTime); 

// Now with everything in ints, you can do your conditional evals 
+0

PHP संस्करण 5.2.9 में मदद कर सकता है - मैं इसे एक uk2.net सर्वर पर चला रहा हूं – methuselah

+0

यह सुनिश्चित नहीं है कि वे इतने पुराने संस्करण क्यों चल रहे हैं, आपको उन्हें संपर्क करने के लिए संपर्क करना होगा उन्हें अपग्रेड करने के लिए, 5.2.9 के लिए दिनांक/समय मैनिपुलेशन के लिए एक समर्थित फ़ंक्शन कॉल का उपयोग करें, या एक नया होस्ट ढूंढें जो अपने सॉफ़्टवेयर के साथ अद्यतित है। –

+1

क्या आप किसी भी समर्थित फ़ंक्शन कॉल की अनुशंसा कर सकते हैं? – methuselah

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