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

PDO MySQL को कच्ची क्वेरी भेजता है जबकि Mysqli तैयार क्वेरी भेजता है, दोनों एक ही परिणाम उत्पन्न करते हैं

आपका पीडीओ तैयार प्रश्नों का अनुकरण करने के लिए कॉन्फ़िगर किया गया है, जबकि mysqli सही तैयार प्रश्नों का उपयोग कर रहा है।

तैयार क्वेरी स्ट्रिंग को बांधती है ''1'' एक पूर्णांक पैरामीटर मान के रूप में। PHP इसे intval() . जैसी किसी चीज़ का उपयोग करके एक पूर्णांक के लिए बाध्य करती है . गैर-संख्यात्मक अग्रणी वर्णों वाली कोई भी स्ट्रिंग PHP द्वारा 0 के रूप में व्याख्या की जाती है, इसलिए पैरामीटर मान बाद भेजा जाता है तैयार मान 0 है।

नकली तैयार क्वेरी स्ट्रिंग इंटरपोलेशन . का उपयोग करती है (बाध्यकारी के बजाय) स्ट्रिंग जोड़ने के लिए ''1'' SQL क्वेरी में पहले MySQL इसे पार्स करता है। लेकिन परिणाम समान है, क्योंकि SQL एक पूर्णांक संदर्भ में गैर-संख्यात्मक अग्रणी वर्णों वाली स्ट्रिंग को मान 0 के रूप में भी मानता है।

केवल अंतर यह है कि सामान्य क्वेरी लॉग में क्या समाप्त होता है जब पैरामीटर तैयार करने से पहले बनाम तैयार होने के बाद बाध्य होता है।

आप पीडीओ को वास्तविक तैयार प्रश्नों का उपयोग करने के लिए भी कह सकते हैं, इसलिए इसे इस मामले में mysqli की तरह ही कार्य करना चाहिए:

$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

पुनश्च:यह एक अच्छा कारण प्रदर्शित कर सकता है कि क्यों id मान 0 के बजाय 1 पर प्रारंभ करने के लिए प्रथागत है।




  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. DUAL से 1 चुनें:MySQL

  4. MySQL रिमोट कनेक्शन [हमेशा की तरह नहीं]

  5. आप एक एस्ट्रोफ़े को कैसे एन्कोड करते हैं ताकि यह MySQL में खोजा जा सके?