2011-12-16 18 views
8

के माध्यम से नहीं, कोई भी विचार मदद करेगा, मैं थोड़ी देर के लिए इस पर रहा हूं और यह पता नहीं लगा सकता कि क्या गलत है।MySQL क्वेरी phpmyadmin में काम करती है लेकिन php

समस्या: प्रश्न तब तक ठीक काम करता है जब तक कि मैंने एकाधिक शब्द खोज में जोड़ा नहीं है जिसे आप नीचे बोल्ड देख सकते हैं। हालांकि, मैंने एसक्यूएल क्वेरी को प्रतिबिंबित किया और फिर phpmyadmin में चिपकाया और यह पूरी तरह से काम किया लेकिन PHP के माध्यम से यह 0 रिकॉर्ड के साथ परिणाम। यह किसी भी मतलब नहीं है और मैं क्या 0.

SELECT 
     DISTINCT c.id 
    FROM 
     carpets AS c 
     INNER JOIN carpet_relations AS r1 ON c.id = r1.carpet_id 
     INNER JOIN carpet_relations AS r2 ON c.id = r2.carpet_id 
     INNER JOIN carpet_relations AS r3 ON c.id = r3.carpet_id 
    WHERE 
     c.active = '1' 



     AND ((c.title LIKE '%north tabriz%') OR **(c.title LIKE '%north%') OR (c.title LIKE '%tabriz%')** OR (c.item_no LIKE '%north tabriz%') OR **(c.item_no LIKE '%north%') OR (c.item_no LIKE '%tabriz%')** OR (c.pattern LIKE '%north tabriz%') OR **(c.pattern LIKE '%north%') OR (c.pattern LIKE '%tabriz%')** OR (c.period LIKE '%north tabriz%') OR **(c.period LIKE '%north%') OR (c.period LIKE '%tabriz%')** OR (c.country LIKE '%north tabriz%') **OR (c.country LIKE '%north%') OR (c.country LIKE '%tabriz%')**) 

     AND (c.width_feet BETWEEN '0' AND '22') 
     AND (c.width_inches BETWEEN '0' AND '11') 
     AND (c.height_feet BETWEEN '0' AND '49') 
     AND (c.height_inches BETWEEN '0' AND '11') 
    ORDER BY 
     c.item_no 


id int(11) NO PRI  NULL auto_increment 
active int(11) NO  NULL  
title varchar(250) NO  NULL  
item_no  varchar(250) NO  NULL  
country  varchar(250) NO  NULL  
period varchar(250) NO  NULL  
pattern  varchar(250) NO  NULL  
price float NO  NULL  
web_special  float NO  NULL  
notes text NO  NULL  
width_feet int(11) NO  NULL  
width_inches int(11) NO  NULL  
height_feet  int(11) NO  NULL  
height_inches int(11) NO  NULL  
restrict int(11) NO  NULL  
views_amount int(11) NO  NULL  
last_modified datetime NO  NULL  
modified_by  int(11) NO  NULL 
+0

क्या आपके अन्य संदर्भ में कोई अन्य आसान कथन काम करता है? (कार्पेट से चुनें * – djot

+0

आपकी टेबल स्कीमा और mysql से त्रुटि देखना उपयोगी होगा। – Brian

+0

हां वे साथ ही साथ करते हैं यदि ** से घिरे क्षेत्रों को हटा दिया जाता है तो यह सामने के अंत में ठीक काम करता है .... हालांकि जब मैं सामने वाले अंत में उन वर्गों को जोड़ता हूं तो यह काम नहीं करता है और बैकएंड (phpmyadmin) यह –

उत्तर

1

का एक परिणाम के कारण हो सकता है की कोशिश करो को समझ नहीं सकता इस:

SELECT 
    DISTINCT c.id 
FROM 
    carpets AS c 
    INNER JOIN carpet_relations AS r1 ON c.id = r1.carpet_id 
    INNER JOIN carpet_relations AS r2 ON c.id = r2.carpet_id 
    INNER JOIN carpet_relations AS r3 ON c.id = r3.carpet_id 
WHERE 
    c.active = '1' 

    AND ((c.title LIKE '%north%') 
    OR (c.title LIKE '%tabriz%') 
    OR (c.item_no LIKE '%north%') 
    OR (c.item_no LIKE '%tabriz%') 
    OR (c.pattern LIKE '%north%') 
    OR (c.pattern LIKE '%tabriz%') 
    OR (c.period LIKE '%north%') 
    OR (c.period LIKE '%tabriz%') 
    OR (c.country LIKE '%north%') 
    OR (c.country LIKE '%tabriz%')) 

    AND (c.width_feet BETWEEN 0 AND 22) 
    AND (c.width_inches BETWEEN 0 AND 11) 
    AND (c.height_feet BETWEEN 0 AND 49) 
    AND (c.height_inches BETWEEN 0 AND 11) 
ORDER BY 
    c.item_no 

मैं% तबरेज़ उत्तर "की तरह '% गिरा '' खंड क्योंकि वे अनावश्यक थे, क्योंकि यदि यह अकेले "उत्तर टैब्रिज़" से मेल खाता है, तो "उत्तर" और "टैब्रिज़" भी सच होगा।

इसके अलावा, मैंने सिंगल कोट्स को दूर कर लिया जो कि खंडों के बीच संख्याओं के आस-पास थे।

परीक्षण करने के लिए तालिकाओं को पुन: उत्पन्न नहीं कर सकता क्योंकि आपके पास केवल 1 तालिका दिखाई गई है, लेकिन उम्मीद है कि इससे मदद मिलती है।

0

यह संभवतः क्वेरी नहीं है लेकिन आपके PHP कोड में कहीं भी एक त्रुटि है। क्या आप हमें देखने के लिए PHP कोड पोस्ट कर सकते हैं?

3

PHP पर उद्धरणों का उपयोग करने के तरीके पर ध्यान दें। एसक्यूएल प्रश्नों के लिए जहां एक खंड विशेष रूप से यह एक मुद्दा हो सकता है क्योंकि जहां खंड को सिंगल कोट्स में कहां x = 'value' कहने की आवश्यकता है। इसलिए सुनिश्चित करें कि आपकी समग्र SQL स्ट्रिंग डबल कोट्स का उपयोग करती है। साथ ही, सिंगल कोट्स में PHP चर का मूल्यांकन नहीं किया जाएगा, इसलिए यदि आप एक PHP चर पर एक खंड बना रहे हैं तो आपको SQL कथन में इसका उपयोग करने से पहले सिंगल कोट्स में उस चर को लपेटने की आवश्यकता है। मुझे उम्मीद है कि यह सब समझ में आया, मैं इस मुद्दे पर 2 दिनों के लिए अटक गया जब मैंने PHP/MySQL सीखना शुरू किया।

1

अगर वे न काम डेटाबेस मेजबान, उपयोगकर्ता नाम, पासवर्ड में देखो (वे गलत तरीके से इनपुट हो सकता है) (कनेक्शन की जाँच करने के लिए)

पहले सरल प्रश्नों की कोशिश एक बार जब आप डाटाबेस कनेक्शन के बारे में सुनिश्चित कर रहे हैं, बहु क्वेरी का उपयोग करके देखें php में समारोह,, अनावश्यक रिक्ति निकालें पाश या कई चरणों

आशा है कि यह मदद करता है

0

के लिए एक में क्वेरी चलाने कभी कभी मैं इस समस्या को, ऐसा होता है केवल जब वहाँ कनेक्शन या या आपकी क्वेरी के साथ किसी भी समस्या नहीं है मिलता है। कृपया अपनी क्वेरी प्रिंट करें और देखें कि यह कैसे प्रिंट करता है। क्वेरी में आपको $var का उपयोग करना होगा।

0

अपने PHP कोड में सही तरीके से ("") को संभालने का प्रयास करें। यदि आपकी क्वेरी phpMyAdmin में ठीक काम करती है तो इसे आपके PHP कोड में भी काम करना चाहिए। या आपके डेटाबेस कनेक्शन में कुछ त्रुटि हो सकती है। सुनिश्चित करें कि आप अपनी वांछित तालिका के सही डेटाबेस का चयन कर रहे हैं।

संबंधित मुद्दे