Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

दिनांक अंतर प्राप्त करें

आपको MySQL प्रश्नों को विकसित करना और उन्हें पहले PHP कोड के संदर्भ के बाहर परिपूर्ण करना महत्वपूर्ण है, फिर क्वेरी को एकीकृत करने के बाद जब आप इसे एक MySQL क्लाइंट एप्लिकेशन में की आवश्यकता के अनुसार काम करते हैं तो इसे एकीकृत करें। जैसे MySQL वर्कबेंच, PHPMyAdmin, आदि।

आपकी क्वेरी में, बाहरी SELECT इसकी आवश्यकता नहीं है, और आंतरिक क्वेरी स्वयं लगभग सही दिखती है, लेकिन जिस तरह से आप इसे पीडीओ के साथ निष्पादित करने का प्रयास करते हैं, वह दोषपूर्ण है।

SELECT
  due_date,
  date_paid,
  DATEDIFF(due_date, date_paid) as date_interval
FROM $tbl_name
WHERE
  DATEDIFF(due_date, date_paid) <= $setDay
ORDER BY trans_id DESC
LIMIT $start, $limit

अब इसे पीडीओ में निष्पादित करने के लिए, आपको prepare()/bindParam()/execute() एक तैयार कथन बनाने के लिए, मापदंडों में बाँधें, और इसे उन मापदंडों के साथ निष्पादित करें (हालांकि आप तालिका के नाम को बाँध नहीं सकते - जो एक चर बना रहना चाहिए)। आपके वर्तमान कोड में, आपके पास PDO::query() . का मिश्रण है सरल स्थैतिक प्रश्नों के लिए उपयोग की जाने वाली विधि और PDOStatement::execute() विधि जो एक तैयार कथन को निष्पादित करने के लिए उपयोग की जाती है। आपको query() . के बजाय तैयार स्टेटमेंट मेथड का इस्तेमाल करना चाहिए ।

// Setup the statement with named parameters like :setDay
$sql = "
    SELECT
      due_date,
      date_paid,
      DATEDIFF(due_date, date_paid) as date_interval
    FROM $tbl_name
    WHERE
      DATEDIFF(due_date, date_paid) <= :setDay
    ORDER BY trans_id DESC
    LIMIT :start, :limit
";
// Make PDO throw useful errors on failure
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Prepare the statement
$stmt = $pdo->prepare($sql);

// Bind your 3 parameters and execute it
$stmt->bindParam(':setDay', $setDay, PDO::PARAM_INT);
$stmt->bindParam(':start', $start, PDO::PARAM_INT);
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
$stmt->execute();

// Fetch your rows returned from the query
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Do something with them
print_r($rows);

मैं हमेशा MySQL डेवलपर्स के लिए इस PDO ट्यूटोरियल के साथ समय बिताने की सलाह देता हूं। जो पीडीओ के उपयोग को पुराने mysql_*() . के संदर्भ में रखता है एपीआई से आप पहले से परिचित हो सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL वर्कबेंच 6.2 क्वेरी के हिस्से के रूप में .sql फ़ाइल कैसे चलाएं?

  2. डेल्फी - TSQLQuery मुक्त होने के बाद भी MySQL पर एक प्रोसेस छोड़ रहा है

  3. MySQL वर्कबेंच का उपयोग करके एक MySQL डेटाबेस को रिवर्स इंजीनियरिंग करें

  4. PHP और mySQL में यूजर पासवर्ड बदलना

  5. MySQL डेटाबेस में 255 से अधिक char को कैसे स्टोर करें?