2011-03-18 14 views
11

मेरे पास 'ऑपरेशन.date', 'operation.name' और आदि जैसे कॉलम के साथ mysql तालिका है उस तालिका डेटा को $mysqli->fetch_object() के साथ ऑब्जेक्ट के रूप में लाने के बाद मुझे यह (पंक्ति का print_r) मिलता है:नाम में डॉट के साथ php ऑब्जेक्ट विशेषता

stdClass Object 
(
[id] => 2 
[operation.date] => 2010-12-15 
[operation.name] => some_name 
) 

मैं operation.date और operation.name और अन्य सभी अजीब तरह से नामित वस्तु गुण कैसे acces करते हैं?

+3

का उपयोग कर यह डुप्लिकेट है द्वारा आपत्ति प्राप्त कर सकते हैं। जवाब यह है कि यह वैध संपत्ति नहीं है। आपको इसे बदलना चाहिए। लेकिन आप इसे एक्सेस करने के लिए '$ obj -> {' operation.date '} का उपयोग कर सकते हैं। – Gordon

+0

[ऑब्जेक्ट की कुंजी में हाइफ़न] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/2925044/hyphens-in-keys-of-object) और [मैं इस ऑब्जेक्ट प्रॉपर्टी को कैसे एक्सेस करूं] [http: // stackoverflow.com/questions/758449/php-how-do-i-access-this-object-property) – Gordon

+0

इसके लिए खेद है। खोज रहा था लेकिन हाइफ़न के लिए नहीं। – egis

उत्तर

31

तरह SELECT column AS nameWithoutDots ...
अपने SQL क्वेरी में उपनाम निर्दिष्ट करें या $object->{'operation.name'}
साथ इन गुणों का उपयोग या इस तरह सरणी वस्तु डाली: $obj = (array)$obj; echo $obj['operation.name']

+1

+1 जैसे उद्धरणों में लपेटने की आवश्यकता है ओपी को बताएं कि कारणों का इलाज कैसे करें और लक्षण नहीं – Gordon

+1

मुझे एलियास के बारे में पता है, लेकिन मील लंबा लिखने के लिए बहुत अधिक प्रयास सभी कॉलम के साथ उपनाम के रूप में पूछें :) चूंकि आपका उत्तर सबसे अधिक जानकारीपूर्ण था, मैं इसे स्वीकार करूंगा;) सभी उत्तरों के लिए धन्यवाद। – egis

3

इन विशेषताओं आप उन्हें कर्ली कोष्ठक के साथ रैप करने की जरूरत पहुंचने के लिए:

echo $object->{"operation.date"} //2010-12-15

आप एक विशेषता इस तरह से हमलावर प्रतीक हटा दिया जाता है सेट हैं, तो आप echo $object->operationdate //2010-12-15

+9

+1 लेकिन मुझे लगता है कि 'operation.date' को कोट्स में लपेटने की जरूरत है। –

+2

आपको ऑको $ ऑब्जेक्ट -> {'ऑपरेशन.date'} –

2
के रूप में विशेषता का लाभ उठा पाएँगे

'as' सुविधा

उदाहरण का उपयोग कर वैध संपत्ति नामों को वापस करने के लिए एसक्यूएल बदलें। operation.date तारीख के रूप में चयन

8

एक बिंदु के साथ गुण तक पहुँचने होना चाहिए करने का सही तरीका:

echo $object->{"operation.date"} 
0

आप Assoc सरणी के बजाय $mysqli->fetch_assoc()

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