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

पीडीओ को एक सरणी के साथ निष्पादित करें जिसमें शून्य मान हों

कृपया निष्पादित करने के लिए सरणी पास करने के बजाय बाइंडवैल्यू का उपयोग करने पर विचार करें। जैसा कि यह कहता है यहां :

यह आपके शेष एप्लिकेशन के लिए बहुत पारदर्शी बनाना संभव होना चाहिए, क्योंकि आपके पास पहले से ही वे मान हैं जिन्हें आप एक सरणी के रूप में अद्यतन करना चाहते हैं। उदाहरण के लिए प्रयास करें कुछ इस तरह:

<?php
function executeWithDataTypes(PDOStatement $sth, array $values) {
    $count = 1;
    foreach($values as $value) {
        $sth->bindValue($count, $values['value'], $values['type']);
        $count++;
    }

    return $sth->execute();
}

$sth = $handle->prepare("UPDATE table SET name = ?, id_extra1 = ?, id_extra2 = ? WHERE id_something = ?");

$values = array();
$values[] = array('value' => 'testing', 'type' => PDO::PARAM_STR);
$values[] = array('value' => 2, 'type' => PDO::PARAM_INT);
$values[] = array('value' => null, 'type' => PDO::PARAM_NULL);
$values[] = array('value' => 1958, 'type' => PDO::PARAM_INT);

$result = executeWithDataTypes($sth, $values);
?>

जैसा कि आपने नोट किया है कि बाइंडपरम का उपयोग करने से आपको पहले सिरदर्द होता था, कृपया बाइंडवैल्यू और bindParam . व्यक्तिगत रूप से, मैं साइड इफेक्ट के कारण कभी भी बाइंडपरम का उपयोग नहीं करता, जिससे स्क्रिप्ट को समझना मुश्किल हो जाता है, हालांकि निश्चित रूप से ऐसे मामले हैं जहां ये प्रभाव काम आएंगे।

संपादित करें:आप निश्चित रूप से फ़ंक्शन को और भी सरल बना सकते हैं और कुछ ऐसा करके पारित सरणी में अतिरिक्त कुंजी के रूप में प्रकार को निर्दिष्ट करने की आवश्यकता से छुटकारा पा सकते हैं:

$type = PDO::PARAM_STR;
switch(true) {
    case is_null($value): $type = PDO::PARAM_NULL; break;
    case is_numeric($value): $type = PDO::PARAM_INT; break;
    // ...
    default: break;
}

और सरणी में पारित मान के प्रकार के आधार पर प्रकार निर्धारित करें; हालाँकि, यह अधिक त्रुटि-प्रवण है, क्योंकि उदा। फ़्लोट्स भी संख्यात्मक होते हैं और इससे उपरोक्त स्विच स्टेटमेंट में गलत निर्णय होगा, लेकिन मैंने सोचा कि मैं इसका उल्लेख पूर्णता के लिए करूंगा।



  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 को 5.5 से 5.6 . में अपग्रेड करने के बाद धीमी क्वेरी

  2. एक ही सर्वर पर एक MySQL डेटाबेस की नकल कैसे करें

  3. डीडी-एमएमएम-वाई के प्रारूप में जोडा लोकलडेट के लिए स्ट्रिंग

  4. MySQL में केस स्टेटमेंट का उपयोग कैसे करें

  5. नोड.जेएस में MySQL रिटर्न वैल्यू को प्रोसेस करने के वादे का उपयोग करें