प्रो टिप:कभी नहीं SELECT *
. का उपयोग करें सॉफ्टवेयर में जब तक आप ठीक से नहीं जानते कि आप ऐसा क्यों कर रहे हैं। आपके मामले में यह हानिकारक है।
मुझे लगता है कि आपकी क्वेरी वास्तव में user
. के विरुद्ध है और trade
आपने अपने प्रश्न में जिन तालिकाओं का उल्लेख किया है।
सबसे पहले, 21वीं सदी के SQL का उपयोग करके अपनी क्वेरी को इस प्रकार पुन:व्यवस्थित करें:
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
दूसरा, इसका उपयोग अपने उपयोगकर्ता के नाम और ट्रेड की गई आइटम आईडी को पुनः प्राप्त करने के लिए करें।
SELECT s.user_name AS sender,
r.user_name AS receiver,
t.trade_id AS item_id
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
JOIN user AS r ON r.user_id = t.user_id_receiver
WHERE s.facebook_id = $fbid
देखें कि हम कैसे JOIN
user
तालिका दो बार, दो अलग-अलग उपनामों के साथ s
(प्रेषक के लिए) और r
(रिसीवर के लिए)? आईडी से दोनों नाम निकालने की यही तरकीब है।
देखें कि हम उपनामों को कैसे नियोजित करते हैं sender
और receiver
दो user_name
. को स्पष्ट करने के लिए परिणाम सेट में कॉलम?
अब, जब आप php fetch_array
. का उपयोग करते हैं फ़ंक्शन, आप सरणी में इन तत्वों के साथ समाप्त हो जाएंगे।
$history['sender']
$history['receiver']
$history['item_id']
सरणी अनुक्रमणिका स्ट्रिंग आपके SELECT
. में निर्दिष्ट उपनाम नामों से मेल खाती है आपकी क्वेरी में खंड।
तो, SELECT *
. से बचने का एक कारण यह है कि आप एक ही नाम के एक से अधिक कॉलम प्राप्त कर सकते हैं, और इसका अर्थ है fetch_array
उन डुप्लिकेट को हटा देगा और इसलिए यह आपके परिणाम सेट से उपयोगी जानकारी खो देगा।