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

शॉर्टहैंड पीडीओ क्वेरी

तो आपको "मुझे यह त्रुटि क्यों मिल रही है" प्रश्न का उत्तर मिल गया है, लेकिन "शॉर्टहैंड पीडीओ क्वेरी" के लिए एक नहीं मिला।

इसके लिए हमें "प्रोग्रामिंग" नामक एक चीज़ की आवश्यकता होगी।

प्रोग्रामिंग के बारे में एक दिलचस्प बात यह है कि हम अन्य व्यवसायों की तरह मौजूदा टूल तक सीमित नहीं हैं। प्रोग्रामिंग के साथ हम हमेशा अपना खुद का टूल बना सकते हैं, और फिर पुराने टूल के पूरे सेट के बजाय इसका उपयोग करना शुरू कर सकते हैं।

और ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग इसमें विशेष रूप से अच्छा है, क्योंकि हम एक मौजूदा ऑब्जेक्ट ले सकते हैं और बस कुछ कार्यक्षमता जोड़ सकते हैं, बाकी को छोड़कर।

उदाहरण के लिए, कल्पना कीजिए कि हम पीडीओ में तैयार क्वेरी को चलाने के लिए एक शॉर्टहैंड तरीका चाहते हैं। हमें केवल विस्तार की आवश्यकता है पीडीओ ऑब्जेक्ट एक नई शॉर्टहैंड विधि के साथ। सबसे कठिन हिस्सा है नई पद्धति को एक नाम देना।

बाकी सरल है:आपको कोड की केवल कुछ पंक्तियों की आवश्यकता है

class MyPDO extends PDO
{
    public function run($sql, $bind = NULL)
    {
        $stmt = $this->prepare($sql);
        $stmt->execute($bind);
        return $stmt;
    }
}

यह है सारा कोड आप की जरूरत है। आप इसे उसी फाइल में स्टोर कर सकते हैं जहां आप अपने डेटाबेस क्रेडेंशियल्स को स्टोर करते हैं। ध्यान दें कि यह जोड़ आपके मौजूदा कोड को प्रभावित नहीं करेगा किसी भी तरह से - यह बिल्कुल वैसा ही रहता है और आप हमेशा की तरह सभी मौजूदा पीडीओ कार्यक्षमता का उपयोग जारी रख सकते हैं।

अब आपको पीडीओ कंस्ट्रक्टर में केवल 2 अक्षरों को बदलना है, इसे कहते हैं

$conn = new MyPDO(...the rest is exactly the same...);

और तुरंत आप अपने चमकदार नए टूल का उपयोग शुरू कर सकते हैं:

$sql = "SELECT * FROM myTable WHERE id = :id";
$result = $conn->run($sql, ['id' => $id])->fetchAll(PDO::FETCH_ASSOC);

या, इसे थोड़ा सा अनुकूलन देते हुए,

$result = $conn->run("SELECT * FROM myTable WHERE id = ?", [$id])->fetchAll();

जैसा कि आप हमेशा के लिए एक बार डिफ़ॉल्ट फ़ेच मोड सेट कर सकते हैं, और केवल एक चर के लिए नामित प्लेसहोल्डर के लिए कोई उपयोग नहीं है। जो इस कोड को एक वास्तविक आशुलिपि बनाता है स्वीकृत उत्तर की तुलना में,

$stmt_test = $conn->prepare("SELECT * FROM status WHERE status_id = ?");
$stmt_test->execute([$id]);
$result = $stmt_test->fetchAll(PDO::FETCH_ASSOC);

और यहां तक ​​कि अब तक आपको मिले सर्वोत्तम उत्तर तक,

$result = $conn->prepare("SELECT * FROM status WHERE status_id = ?");
$result->execute([$id]);

उल्लेख नहीं है कि उत्तरार्द्ध हमेशा प्रयोग योग्य नहीं होता है, क्योंकि यह केवल एक सरणी प्राप्त करने के लिए फिट बैठता है। जबकि एक असली . के साथ शॉर्टहैंड कोई भी परिणाम स्वरूप संभव है:

$result = $conn->run($sql, [$id])->fetchAll(); // array
$result = $conn->run($sql, [$id])->fetch(); // single row
$result = $conn->run($sql, [$id])->fetchColumn(); // single value
$result = $conn->run($sql, [$id])->fetchAll(PDO::FETCH_*); // dozens of different formats


  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 संग्रहीत फ़ंक्शन में गोटो लेबल का उपयोग कैसे करें

  2. मैं एक विशिष्ट बिंदु से ऑटो वेतन वृद्धि कैसे शुरू करूं?

  3. Laravel 4 में पेजिनेशन एक पेज के लिए काम करता है। लेकिन दूसरे के लिए काम नहीं कर रहा

  4. MySQL धीमी क्वेरी लॉग तेजी से क्वेरी लॉगिंग

  5. MySQL में क्वेरी प्रदर्शन अनुकूलन