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

पीडीओ और माईएसक्यूएल फुलटेक्स्ट सर्च

यह दुर्भाग्य से क्वेरी पैरामीटर के उपयोग के लिए एक अजीब अपवाद है (संपादित करें: लेकिन जाहिरा तौर पर प्रत्येक MySQL शाखा के सबसे हालिया बिंदु-रिलीज़ में नहीं, नीचे देखें)।

AGAINST() . में पैटर्न चाहिए एक स्थिर स्ट्रिंग बनें, क्वेरी पैरामीटर नहीं। SQL क्वेरीज़ में अन्य स्थिर स्ट्रिंग्स के विपरीत, आप यहाँ क्वेरी पैरामीटर का उपयोग नहीं कर सकते, केवल MySQL में एक सीमा के कारण।

खोज पैटर्न को सुरक्षित रूप से क्वेरी में शामिल करने के लिए, PDO::quote() समारोह। ध्यान दें कि पीडीओ का उद्धरण () फ़ंक्शन पहले से ही उद्धरण सीमांकक जोड़ता है (mysql_real_escape_string () के विपरीत)।

$quoted_search_text = $this->db->quote('+word +word');

$sql = $this->db->prepare("SELECT ... FROM search_table 
    WHERE MATCH(some_field) AGAINST($quoted_search_text IN BOOLEAN MODE");

@YourCommonSense की ओर से दोबारा टिप्पणी करें:

आप सही कह रहे हैं, मैंने अभी-अभी MySQL 5.5.31, 5.1.68, और 5.0.96 पर इसका परीक्षण किया है (MySQL सैंडबॉक्स एक अद्भुत उपकरण है), और ऐसा लगता है कि ये संस्करण AGAINST() खंड में क्वेरी पैरामीटर स्वीकार करते हैं। गतिशील एसक्यूएल क्वेरी।

मुझे अभी भी अतीत में मौजूद एक संघर्ष का स्मरण है। हो सकता है कि इसे प्रत्येक शाखा के सबसे हालिया बिंदु-विमोचन में ठीक किया गया हो। उदाहरण के लिए, मुझे ये संबंधित बग मिलते हैं:

  • AGAINST() क्लॉज में संग्रहीत कार्यविधि पैरामीटर का उपयोग करने से हमेशा एक ही परिणाम मिलता है:http://bugs.mysql.com/bug.php?id=3734
  • तैयार किए गए कथन के साथ क्रैश या अजीब परिणाम, MATCH और FULLTEXT:http:// Bugs.mysql.com/bug.php?id=14496


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डोमपीडीएफ के साथ कई पेज कैसे बनाएं?

  2. मैं मॉडल के बिना रेल ऐप से एक MySQL डेटाबेस से कैसे पूछ सकता हूं?

  3. MySQL PHP - चुनें कि आईडी =सरणी () कहां है?

  4. डेटटाइमफिल्ड को एक बेवकूफ डेटाटाइम प्राप्त हुआ

  5. एंड्रॉइड और PHP - PHP का उपयोग करके MySQL से JSONArray कैसे प्रदर्शित करें?