2010-03-03 18 views
60

क्या कुछ PDO::PARAM_??? मौजूद हैं जिनका उपयोग दिनांक या टाइमस्टैम्प के लिए किया जा सकता है?पीडीओ :: तिथियों के लिए PARAM?

नमूना कोड:

$sql = "UPDATE my_table SET current_date = :date WHERE id = 43"; 
$statement = $pdo->prepare ($sql); 
$statement->bindParam (":date", strtotime (date ("Y-m-d H:i:s")), PDO::PARAM_STR); 
$statement->execute(); 

उत्तर

80

SQL क्वेरी में कोई दिनांक लिखते समय, आप इसे एक स्ट्रिंग के रूप में लिख रहे हैं; आपको तैयार बयानों के साथ ऐसा करना होगा, और PDO::PARAM_STR का उपयोग करें, जैसा कि आपने प्रस्तावित कोड के हिस्से में किया था।

और "टाइमस्टैम्प के लिए", "टाइमस्टैम्प" द्वारा अगर आप मतलब है:

  • MySQL टाइमस्टैम्प डेटा प्रकार: यह एक ही है, आप इसे एक string
  • पीएचपी यूनिक्स के रूप में पारित करेंगे टाइमस्टैम्प, जो एक पूर्णांक है: आप इसे int पास कर देंगे।
+1

एमएस परिशुद्धता के मामले में क्या? – ManuelSchneid3r

4

नहीं। एक स्ट्रिंग के रूप में तारीख का इलाज करें।

15

बस PHP दिनांक फ़ंक्शन का उपयोग करके दिनांक बनाना आपके लिए इस समस्या को ठीक करना चाहिए।

$ handle-> (": तिथि" => तिथि ("वाई-एम-डी एच: मैं: s" सरणी (, strtotime ($ तारीख)), पीडीओ :: PARAM_STR)) पर अमल;

-3

यह मेरे लिए काम किया।

//MS SQL 
$sql = "UPDATE my_table SET current_date = GETDATE() WHERE id = 43"; 
$statement = $pdo->prepare ($sql); 
//$statement->bindParam (":date", strtotime (date ("Y-m-d H:i:s")), PDO::PARAM_STR); 
$statement->execute(); 
+1

आप mysql GETDATE फ़ंक्शन के बजाय एक PHP- जेनरेट की गई तारीख को पैरामीटर को बाध्य करने के तरीके को दिखाकर बहुत मदद नहीं कर रहे हैं ... –

-1

आपको तारीख को स्ट्रिंग के रूप में देखना होगा, लेकिन आप यह जांचने के लिए एक फ़ंक्शन बना सकते हैं कि इसे एक पैरा के रूप में पास करने से पहले वैध दिनांक है या नहीं। इस तरह:

function checkValidDate($date, $format = "dd-mm-yyyy"){ 
      if($format === "dd-mm-yyyy"){ 
      $day = (int) substr($date,0,2); 
      $month = (int) substr($date, 3,2); 
      $year = (int) substr($date, 6,4); 

     }else if($format === "yyyy-mm-dd"){ 
      $day = (int) substr($date,8,2); 
      $month = (int) substr($date, 5,2); 
      $year = (int) substr($date, 0,4); 
     } 

     return checkdate($month, $day, $year); 
} 
संबंधित मुद्दे