का उपयोग कर MySQL क्वेरी समस्याएं तो मेरे पास एक दिलचस्प समस्या है जिसे मैंने कभी नहीं देखा है और इस मुद्दे को ठीक करने के बारे में अधिक जानकारी नहीं मिल रही है। मेरे पास विशाल डेटाबेस है जिसमें इसमें भारी मात्रा में डेटा है (10 साल के लायक), और इसके माध्यम से खोज करने का प्रयास किया गया है।LISE और apostrophe
अब खोज सामग्री ठीक काम करती है, लेकिन हाल ही में किसी ने इसे 'बग' के बारे में मेरे ध्यान में लाया यदि आप करेंगे। मैंने अपेक्षित परिणाम प्राप्त करने के लिए इसे शूट करने में परेशानी करने की कोशिश की है, लेकिन इसका कोई फायदा नहीं हुआ है।
जब कोई खोज में एपोस्ट्रोफ़ी का उपयोग करता है, यह है कि खोज दोष बाहर, लेकिन यह कोई परिणाम नहीं है:
यह मेरा मुद्दा है। तो उदाहरण के लिए जब Pete's
खोज क्वेरी निष्पादित करता है लेकिन कुछ भी नहीं देता है। हां, मैं सुनिश्चित करता हूं कि क्वेरी में mysql_real_escape_string() है ताकि Pete's
Pete\'s
बन जाए।
यहां तक कि जब मैं phpmysql की खोज सुविधा का उपयोग करके इसे क्वेरी करने का प्रयास करता हूं, तो मुझे अजीब परिणाम मिलते हैं। क्वेरी इस तरह के रूप में भेजा जाता है:
SELECT * FROM `smd_article` WHERE `copy` LIKE '%Pete\'s%'
लेकिन जब मैं phpmyadmin में खोज सुविधा का उपयोग, यह मेरे देता है:
SELECT * FROM `smd_article` WHERE `copy` LIKE '%Pete''s%'
और जब मैं वास्तव में एसक्यूएल टैब में क्वेरी बाहर टाइप करें, यह अभी भी कोई परिणाम नहीं देता है। लेकिन कुछ 17 के रिकॉर्ड हैं जो वापस आते हैं जब मैं सिर्फ पीट्स का उपयोग करता हूं और कुछ 3k रिकॉर्ड करता हूं जब मैं सिर्फ पेट्स करता हूं।
तो मैं उत्सुक हूं कि मैं क्या गलत कर रहा हूं, या इसे बनाने के लिए गायब हूं ताकि यह लिस्के कथन का उपयोग करके एक प्रश्न में एस्ट्रोफ़े को अनुमति दे सके। विचार? द्वारा mysql_real_escape_string
LIKE '%" . mysql_real_escape_string($find) . "%'
या
LIKE '%Pete%27s%'
या यदि
, लेकिन यह जानते हुए भी इस तरह कि वाइल्डकार्ड प्रश्नों क्वेरी करने के लिए सबसे धीमी संभव तरीके से कर रहे हैं लायक है एक डेटाबेस मैं एक छोटी सी टेबल के लिए ठीक हो सकता हूं, लेकिन यदि आपके पास एक मामूली बड़ी मेज भी है, तो यह वास्तव में चीजों को धीमा कर सकती है। चेतावनी दी। – SDC