मैं एक सुरक्षित ब्लॉग पर काम कर रहा हूं, जहां उपयोगकर्ता द्वारा क्लिक किए जाने के बाद अलग पेज में एक विशिष्ट पोस्ट प्रदर्शित होती है। इस अलग पृष्ठ में पंजीकृत उपयोगकर्ता टिप्पणियां शामिल हैं। मेरे पास मुद्दा यह है कि टिप्पणी लिखने वाले उपयोगकर्ता का नाम वास्तविक उपयोगकर्ता से मेल नहीं खा रहा है, इसके बजाय एक पोस्ट लिखने वाले उपयोगकर्ता का नाम दिखा रहा है। मेरी एसक्यूएल क्वेरी:

$comsql="SELECT c.*,u.name FROM posts p JOIN users u ON p.user_id=u.id"
    ." JOIN comments c on p.id=c.post_id ORDER BY commentdate DESC"; 

मेरी गूंज:]

द्वारा लिखित: , चालू: ">टिप्पणी संपादित करें | ">टिप्पणी हटाएं

-2
Pioneer2017 17 अप्रैल 2017, 23:00
मेरी प्रतिध्वनि:]  – 
Pioneer2017
17 अप्रैल 2017, 23:02
2
उस टिप्पणी को जोड़ने के लिए आपको अपना प्रश्न संपादित करना चाहिए
 – 
Machavity
17 अप्रैल 2017, 23:02
जैसा कि मचावती ने अपने प्रश्न संपादित करें लिखा है और वहां कोड शामिल करें
 – 
Alon Eitan
17 अप्रैल 2017, 23:04
प्रश्न बहुत अस्पष्ट है और यदि क्वेरी निष्पादित की गई थी और एपीआई के साथ कनेक्ट करने के लिए उपयोग किया जाता है। कोई WHERE खंड भी नहीं है, यह देखते हुए कि आप विशेष रूप से किसी उपयोगकर्ता के लिए क्वेरी करना चाहते हैं।
 – 
Funk Forty Niner
17 अप्रैल 2017, 23:12
आपका स्वीकृति रिकॉर्ड संदिग्ध है।
 – 
Funk Forty Niner
17 अप्रैल 2017, 23:14

2 जवाब

हाँ, आप यही पूछते हैं:

ON p.user_id=u.id

आपके पास कुछ ऐसा होना चाहिए:

ON c.user_id=u.id

आपकी SQL क्वेरी में आप टिप्पणी के उपयोगकर्ता के बजाय पोस्ट के उपयोगकर्ता से मेल खा रहे हैं। क्या आपके पास comments टेबल में user_id फ़ील्ड है?

0
bobo_dev 17 अप्रैल 2017, 23:05
नहीं, यह बात नहीं है ... जब मैं ऐसा करता हूं तो यह टिप्पणियों को प्रदर्शित नहीं कर रहा है
 – 
Pioneer2017
17 अप्रैल 2017, 23:10
क्या हम आपकी comments तालिका की संरचना देख सकते हैं?
 – 
bobo_dev
17 अप्रैल 2017, 23:12
इसमें id,post_id,user_id,comment,commentdate . है
 – 
Pioneer2017
17 अप्रैल 2017, 23:15
आपने कहा था कि आप एक विशिष्ट ब्लॉग पोस्ट पेज पर थे? आप अपनी क्वेरी where p.id=XXX में कहां कहते हैं?
 – 
bobo_dev
17 अप्रैल 2017, 23:16
वैसे मैं टेबल से जुड़ रहा हूं, क्या यह जरूरी है? यदि हाँ, तो कृपया सलाह दें कि मुझे इसे कहाँ रखना चाहिए, tnx
 – 
Pioneer2017
17 अप्रैल 2017, 23:23

शायद, टिप्पणियों और उपयोगकर्ता तालिकाओं दोनों में नाम फ़ील्ड है। इसे ठीक करने के लिए;

क्वेरी को इसमें बदलें:

$comsql="SELECT c.*,u.name AS username FROM posts p JOIN users u ON p.user_id=u.id"
    ." JOIN comments c on p.id=c.post_id ORDER BY commentdate DESC"; 

अगर काम नहीं करता है, तो कृपया एक टिप्पणी छोड़ दो

0
Оzgur 17 अप्रैल 2017, 23:07
मेरी टिप्पणी तालिका में कोई नाम फ़ील्ड नहीं है... इसमें आईडी, पोस्ट_आईडी, उपयोगकर्ता_आईडी, टिप्पणी, टिप्पणी दिनांक है
 – 
Pioneer2017
17 अप्रैल 2017, 23:13
क्या आप उपरोक्त समान क्वेरी के साथ $com['name'] से $com['username'] भी बदल सकते हैं?
 – 
Оzgur
17 अप्रैल 2017, 23:17
क्षमा करें, ठीक से समझ में नहीं आया कि आपका क्या मतलब है, क्या मुझे अपनी प्रतिध्वनि के अंदर $comm['name'] को $comm['username'] में बदलना चाहिए?
 – 
Pioneer2017
17 अप्रैल 2017, 23:21
इस मामले में, मैं क्या पेशकश कर सकता हूं, phpmyadmin कंसोल का उपयोग करके अपनी क्वेरी निष्पादित करें और पता लगाने का प्रयास करें। आउटपुट देखे बिना समझना मुश्किल है।
 – 
Оzgur
17 अप्रैल 2017, 23:43