पोस्टग्रेएसक्यूएल फ़ंक्शन। LXXX. PostgreSQL सुविधाएँ डेटाबेस आकार

मानक टेम्पलेट लाइब्रेरी (मानक टेम्पलेट लाइब्रेरी , STL) C++ भाषा की मानक लाइब्रेरी में शामिल है। इसमें सबसे अधिक उपयोग किए जाने वाले कंटेनरों और एल्गोरिदम का कार्यान्वयन शामिल है, जो प्रोग्रामर को उन्हें बार-बार लिखने की दिनचर्या से बचाता है। कंटेनर विकसित करते समय और उन पर लागू एल्गोरिदम (जैसे समान तत्वों को हटाना, सॉर्ट करना, खोजना इत्यादि), या तो बहुमुखी प्रतिभा या प्रदर्शन का त्याग करना पड़ता है। हालाँकि, एसटीएल डेवलपर्स ने लाइब्रेरी को कुशल और सार्वभौमिक बनाने का कार्य स्वयं निर्धारित किया। इस समस्या को हल करने के लिए C++ भाषा के ऐसे सार्वभौमिक साधनों जैसे टेम्प्लेट और ऑपरेटर ओवरलोडिंग का उपयोग किया गया। निम्नलिखित प्रस्तुति में हम विज़ुअल C++ 6.0 कंपाइलर के साथ Microsoft द्वारा आपूर्ति किए गए STL कार्यान्वयन पर भरोसा करेंगे। हालाँकि, उपरोक्त में से अधिकांश अन्य कंपाइलरों द्वारा एसटीएल कार्यान्वयन के लिए भी सत्य होंगे।

एसटीएल में मुख्य अवधारणाएं कंटेनर (कंटेनर), एल्गोरिदम (एल्गोरिदम) और इटरेटर (पुनरावर्तक) की अवधारणाएं हैं।

पात्रवस्तुओं का एक भंडार है (अंतर्निहित और उपयोगकर्ता-परिभाषित दोनों प्रकार)। आमतौर पर, कंटेनरों को क्लास टेम्पलेट के रूप में लागू किया जाता है। सबसे सरल प्रकार के कंटेनर (स्थिर और गतिशील सरणियाँ) सीधे C++ भाषा में बनाए जाते हैं। इसके अलावा, मानक लाइब्रेरी में वेक्टर, सूची, कतार, मानचित्र, सेट और कुछ अन्य जैसे कंटेनरों का कार्यान्वयन शामिल है।

कलन विधिएक कंटेनर में मौजूद वस्तुओं में हेरफेर करने का एक फ़ंक्शन है। एल्गोरिदम के विशिष्ट उदाहरण सॉर्टिंग और सर्चिंग हैं। एसटीएल लगभग 60 एल्गोरिदम लागू करता है जिन्हें विभिन्न कंटेनरों पर लागू किया जा सकता है, जिसमें सी++ भाषा में निर्मित एरे भी शामिल हैं।

इटरेटरएक सूचक का एक अमूर्तन है, अर्थात, एक वस्तु जो कंटेनर में निहित अन्य वस्तुओं को संदर्भित कर सकती है। एक इटरेटर का मुख्य कार्य उस ऑब्जेक्ट तक पहुंच प्रदान करना है जिसे वह संदर्भित करता है (डीरेफ़रेंसिंग) और एक कंटेनर तत्व से दूसरे में जाना (पुनरावृत्ति, इसलिए नाम इटरेटर)। अंतर्निर्मित कंटेनरों के लिए, नियमित पॉइंटर्स का उपयोग इटरेटर के रूप में किया जाता है। अधिक जटिल कंटेनरों के मामले में, पुनरावर्तकों को अतिभारित ऑपरेटरों के एक सेट के साथ कक्षाओं के रूप में कार्यान्वित किया जाता है।

एसटीएल में चिह्नित तत्वों के अलावा एक संख्या भी है सहायक अवधारणाएँ ; आपको उनमें से कुछ के बारे में भी जानना चाहिए।

संभाजक(एलोकेटर) एक ऑब्जेक्ट है जो कंटेनर तत्वों के लिए मेमोरी आवंटित करने के लिए जिम्मेदार है। प्रत्येक मानक कंटेनर के साथ एक आवंटनकर्ता जुड़ा होता है (इसका प्रकार टेम्पलेट पैरामीटर में से एक के रूप में पारित किया जाता है)। यदि किसी एल्गोरिदम को तत्वों के लिए मेमोरी आवंटित करने की आवश्यकता है, तो उसे एक आवंटनकर्ता के माध्यम से ऐसा करना होगा। इस मामले में, आप निश्चिंत हो सकते हैं कि वितरित वस्तुएं सही ढंग से नष्ट हो जाएंगी।

एसटीएल में एक मानक आवंटनकर्ता वर्ग (xmemory फ़ाइल में वर्णित) शामिल है। एसटीएल में कार्यान्वित सभी कंटेनर डिफ़ॉल्ट रूप से इसका उपयोग करते हैं। हालाँकि, उपयोगकर्ता अपनी स्वयं की कक्षा लागू कर सकता है। यह बहुत कम ही आवश्यक होता है, लेकिन कभी-कभी दक्षता या डिबगिंग उद्देश्यों के लिए किया जा सकता है।

आइए हम प्रस्तुत अवधारणाओं के विचार पर अधिक विस्तार से ध्यान दें।

कंटेनरों . प्रत्येक कंटेनर एक कड़ाई से परिभाषित इंटरफ़ेस प्रदान करता है जिसके माध्यम से एल्गोरिदम इसके साथ बातचीत करेगा। कंटेनर-विशिष्ट इटरेटर यह इंटरफ़ेस प्रदान करते हैं। इस बात पर जोर देना महत्वपूर्ण है कि एल्गोरिदम और कंटेनरों के बीच बातचीत के लिए किसी अतिरिक्त सदस्य फ़ंक्शन का उपयोग नहीं किया जाता है। ऐसा इसलिए किया जाता है क्योंकि मानक एल्गोरिदम को काम करना चाहिए, जिसमें C++ भाषा के अंतर्निहित कंटेनर भी शामिल हैं, जिनमें पुनरावर्तक (पॉइंटर्स) होते हैं लेकिन और कुछ नहीं। इस प्रकार, अपना स्वयं का कंटेनर बनाते समय, एक पुनरावर्तक को लागू करना न्यूनतम है।

प्रत्येक कंटेनर एक विशिष्ट प्रकार का इटरेटर लागू करता है। यह सबसे कार्यात्मक पुनरावर्तक प्रकार का चयन करता है जिसे किसी दिए गए कंटेनर के लिए प्रभावी ढंग से कार्यान्वित किया जा सकता है। "कुशल" का अर्थ है कि पुनरावर्तक पर संचालन करने की गति कंटेनर में तत्वों की संख्या पर निर्भर नहीं होनी चाहिए। उदाहरण के लिए, एक वेक्टर के लिए एक रैंडम एक्सेस इटरेटर लागू किया जाता है, और एक सूची के लिए एक द्विदिशात्मक इटरेटर लागू किया जाता है। क्योंकि किसी सूची ऑपरेशन की गति उसकी लंबाई के साथ रैखिक होती है, किसी सूची के लिए रैंडम एक्सेस इटरेटर लागू नहीं किया जाता है।

कंटेनर (वेक्टर, सूची, पेड़) के वास्तविक संगठन के बावजूद, इसमें संग्रहीत तत्वों को एक अनुक्रम के रूप में माना जा सकता है। इस अनुक्रम में पहले तत्व का पुनरावर्तक प्रारंभ() फ़ंक्शन द्वारा लौटाया जाता है, और अंतिम के बाद वाले तत्व का पुनरावर्तक अंत() फ़ंक्शन द्वारा लौटाया जाता है। यह बहुत महत्वपूर्ण है, क्योंकि एसटीएल में सभी एल्गोरिदम प्रारंभ और अंत पुनरावृत्तियों द्वारा निर्दिष्ट अनुक्रमों के साथ सटीक रूप से काम करते हैं।

एसटीएल में नियमित इटरेटर के अलावा, रिवर्स इटरेटर भी हैं (उलटा पुनरावर्तक ). एक रिवर्स इटरेटर इस मायने में अलग है कि यह एक कंटेनर में तत्वों के अनुक्रम के माध्यम से रिवर्स ऑर्डर में पुनरावृत्त होता है। दूसरे शब्दों में, ऑपरेशन + और - उलटे हैं। यह एल्गोरिदम को तत्वों के प्रत्यक्ष और विपरीत दोनों अनुक्रमों पर लागू करने की अनुमति देता है। उदाहरण के लिए, खोज फ़ंक्शन का उपयोग करके, आप किसी कंटेनर की "शुरुआत" और "अंत" दोनों से तत्वों की खोज कर सकते हैं।

एसटीएल में, कंटेनरों को तीन मुख्य समूहों (तालिका 2) में विभाजित किया गया है: अनुक्रम कंटेनर, सहयोगी कंटेनर और कंटेनर एडाप्टर। पहले दो समूहों को प्रथम श्रेणी के कंटेनरों में संयोजित किया गया है।

तालिका 2

कंटेनर वर्गएसटीएल

विवरण

अनुक्रम कंटेनर

वेक्टर

गतिशील सरणी

डेक

द्विदिश कतार

सूची

द्विदिशात्मक रैखिक सूची

सहयोगी कंटेनर

अद्वितीय कुंजियों के साथ सहयोगी कंटेनर

मल्टीसेट

डुप्लिकेट कुंजियों की अनुमति देने वाला सहयोगी कंटेनर

अद्वितीय तत्वों के सेट के लिए सहयोगी कंटेनर

मल्टीमैप

डुप्लिकेट तत्वों वाले सेट के लिए सहयोगी कंटेनर

कंटेनर एडाप्टर

ढेर

मानक ढेर

कतार

मानक कतार

प्राथमिकता कतार

प्राथमिकता कतार

प्रत्येक कंटेनर वर्ग में कार्यान्वित किया गयाएसटीएल , कंटेनर से जुड़े प्रकारों के सेट का वर्णन करता है। आपको अपने स्वयं के कंटेनर लिखते समय इसी अभ्यास का पालन करना चाहिए। यहां सबसे महत्वपूर्ण प्रकारों की एक सूची दी गई है:

value_type - तत्व प्रकार;

आकार प्रकार - तत्वों की संख्या संग्रहीत करने के लिए एक प्रकार (आमतौर पर)।आकार_टी);

इटरेटर - कंटेनर तत्वों के लिए पुनरावर्तक;

कुंजी प्रकार - कुंजी प्रकार (एक सहयोगी कंटेनर में)।

प्रकारों के अलावा, हम फ़ंक्शंस के एक सेट को अलग कर सकते हैं जो एसटीएल में लगभग हर कंटेनर लागू करता है (तालिका 3)। एल्गोरिदम के साथ बातचीत के लिए उनकी आवश्यकता नहीं है, लेकिन उनके कार्यान्वयन से कार्यक्रम में कंटेनरों की विनिमेयता में सुधार होता है। एसटीएल को डिज़ाइन किया गया है ताकि कंटेनर समान कार्यक्षमता प्रदान करें।

टेबल तीन

सभी एसटीएल कंटेनरों की सामान्य विधियाँ

विवरण

डिफ़ॉल्ट कंस्ट्रक्टर

डिफ़ॉल्ट कंस्ट्रक्टर. आमतौर पर एक कंटेनर में कई होते हैंडिजाइनर

कॉपी कंस्ट्रक्टर

कंस्ट्रक्टर कॉपी करें

नाशक

नाशक

खाली

यदि कंटेनर में कोई तत्व नहीं है तो सत्य लौटाता है, अन्यथा गलत लौटाता है

अधिकतम आकार

किसी कंटेनर के लिए तत्वों की अधिकतम संख्या लौटाता है

आकार

वर्तमान समय में कंटेनर में तत्वों की संख्या लौटाता है

ऑपरेटर =

एक कंटेनर को दूसरे को सौंपता है

ऑपरेटर<

यदि पहला कंटेनर दूसरे से छोटा है तो सत्य लौटाता है, अन्यथा गलत लौटाता है

ऑपरेटर<=

यदि पहला कंटेनर दूसरे से बड़ा नहीं है तो सत्य लौटाता है, अन्यथा गलत लौटाता है

ऑपरेटर >

यदि पहला कंटेनर दूसरे से बड़ा है तो सत्य लौटाता है, अन्यथा गलत लौटाता है

ऑपरेटर >=

यदि पहला कंटेनर दूसरे से छोटा नहीं है तो सत्य लौटाता है, अन्यथा गलत लौटाता है

ऑपरेटर ==

यदि तुलना किए गए कंटेनर समान हैं तो सत्य लौटाता है, अन्यथा गलत लौटाता है

ऑपरेटर !=

यदि तुलना किए गए कंटेनर समान नहीं हैं तो सत्य लौटाता है, अन्यथा गलत लौटाता है

बदलना

दो कंटेनरों के तत्वों की अदला-बदली करता है

सुविधाएँ केवल प्रथम श्रेणी के कंटेनरों में उपलब्ध हैं

शुरू

इस फ़ंक्शन के दो संस्करण या तो एक इटरेटर या एक const_iterator लौटाते हैं, जो कंटेनर के पहले तत्व को संदर्भित करता है

इस फ़ंक्शन के दो संस्करण या तो एक इटरेटर या एक कॉन्स्ट_इटरेटर लौटाते हैं, जो कंटेनर के अंत के बाद अगली स्थिति को संदर्भित करता है

rbegin

इस फ़ंक्शन के दो संस्करण या तो वापस आते हैंरिवर्स_इटरेटर या रिवर्स_कॉन्स्ट_इटरेटर , जो कंटेनर के अंतिम तत्व को संदर्भित करता है

उखड़ना

इस फ़ंक्शन के दो संस्करण या तो एक रिवर्स_इटरेटर या एक रिवर्स_कॉन्स्ट_इटरेटर लौटाते हैं, जो कंटेनर के पहले तत्व से पहले की स्थिति को संदर्भित करता है

सम्मिलित करना, मिटाना,

आपको अनुक्रम के बीच में तत्व डालने या हटाने की अनुमति देता है

अंत तालिका 3

स्पष्ट

एक कंटेनर से सभी तत्व निकाल देता है

सामने वापस

पुश_बैक, पॉप_बैक

आपको अनुक्रम में अंतिम तत्व जोड़ने या हटाने की अनुमति देता है

पुश_फ्रंट, पॉप_फ्रंट

आपको अनुक्रम में पहला तत्व जोड़ने या हटाने की अनुमति देता है

इटरेटर आमतौर पर उन कक्षाओं के मित्र के रूप में बनाए जाते हैं जिन पर वे काम करते हैं, जिससे उन कक्षाओं के निजी डेटा तक सीधी पहुंच की अनुमति मिलती है। एक एकल कंटेनर में कई पुनरावर्तक जुड़े हो सकते हैं, जिनमें से प्रत्येक अपनी स्वयं की "स्थितीय जानकारी" (तालिका 4) बनाए रखता है।

तालिका 4

पुनरावर्तक प्रकार

पहुँच

डीरेफ़रेंसिंग

यात्रा

तुलना

आउटपुट इटरेटर

(आउटपुट इटरेटर)

केवल रिकॉर्डिंग

इनपुट इटरेटर

(इनपुट पुनरावर्तक)

केवल पढ़ रहा हूँ

*, ->

==, !=

अग्रेषित पुनरावर्तक

(आगे पुनरावर्तक)

पढ़ें और लिखें

*, ->

==, !=

द्विदिश पुनरावर्तक(द्विदिशात्मक पुनरावर्तक)

पढ़ें और लिखें

*, ->

++, --

==, !=

रैंडम एक्सेस इटरेटर

(रैंडम - एक्सेस इटरेटर)

पढ़ें और लिखें

*, ->,

++, --, +, -, +=, -=

==, !=, <, <=, >, >=

pg_update (संसाधन $कनेक्शन , स्ट्रिंग $table_name , सारणी $डेटा , सरणी $स्थिति [, int $ विकल्प = PGSQL_DML_EXEC ])

pg_update()तालिका में उन रिकॉर्ड्स को प्रतिस्थापित करता है जो शर्तों को पूरा करते हैं स्थितिडेटा डेटा. यदि कोई तर्क दिया गया है विकल्प, डेटा फ़ंक्शन द्वारा रूपांतरित किया जाएगा pg_convert(), जिस पर इस तर्क से पैरामीटर पारित किए जाएंगे।

मापदंडों की सूची

PostgreSQL डेटाबेस कनेक्शन संसाधन।

तालिका नाम

तालिका का नाम जिसमें रिकॉर्ड अद्यतन किए जाते हैं.

सारणी( सरणी), जिनकी कुंजियाँ टेबल_नाम तालिका के कॉलमों के नाम से मेल खाती हैं, और मान इन कॉलमों में डेटा को प्रतिस्थापित कर देंगे।

स्थिति

सारणी( सरणी), जिनकी कुंजियाँ तालिका के स्तंभों के नाम से मेल खाती हैं, tables_name । केवल वे पंक्तियाँ जिनके फ़ील्ड मान सरणी मानों से मेल खाते हैं, अद्यतन की जाएंगी।

विकल्प

स्थिरांकों में से एक PGSQL_CONV_OPTS, PGSQL_DML_NO_CONV, PGSQL_DML_ESCAPE, PGSQL_DML_EXEC, PGSQL_DML_ASYNCया PGSQL_DML_STRING, या उनका एक संयोजन। यदि विकल्प शामिल हैं PGSQL_DML_STRING, फ़ंक्शन एक स्ट्रिंग लौटाएगा। यदि स्थापित है PGSQL_DML_NO_CONVया PGSQL_DML_ESCAPE, फिर फ़ंक्शन pg_convert()आंतरिक रूप से नहीं बुलाया गया.

मान लौटाएँ

रिटर्न सत्यसफल समापन पर या असत्यत्रुटि होने पर. फ़ंक्शन स्ट्रिंग लौटाएगा ( डोरी), यदि स्थिर है PGSQL_DML_STRINGविकल्पों में निहित है।

उदाहरण

उदाहरण #1 उपयोग उदाहरण pg_update()

$db = pg_connect('dbname=foo' );
$ डेटा = सरणी ("फ़ील्ड1" => "एए", "फ़ील्ड2" => "बीबी");

// यह सुरक्षित है क्योंकि $_POST स्वचालित रूप से परिवर्तित हो जाता है
$res = pg_update ($db, "post_log", $_POST, $data);
यदि ($res) (
गूंज "डेटा अपडेट किया गया:$res\n" ;
) अन्य (
गूंज "अमान्य डेटा भेजा गया होगा\n";
}
?>

pg_update (संसाधन $कनेक्शन , स्ट्रिंग $table_name , सारणी $डेटा , सरणी $स्थिति [, int $ विकल्प = PGSQL_DML_EXEC ])

pg_update()तालिका में उन रिकॉर्ड्स को प्रतिस्थापित करता है जो शर्तों को पूरा करते हैं स्थितिडेटा डेटा. यदि कोई तर्क दिया गया है विकल्प, डेटा फ़ंक्शन द्वारा रूपांतरित किया जाएगा pg_convert(), जिस पर इस तर्क से पैरामीटर पारित किए जाएंगे।

मापदंडों की सूची

PostgreSQL डेटाबेस कनेक्शन संसाधन।

तालिका नाम

तालिका का नाम जिसमें रिकॉर्ड अद्यतन किए जाते हैं.

सारणी( सरणी), जिनकी कुंजियाँ टेबल_नाम तालिका के कॉलमों के नाम से मेल खाती हैं, और मान इन कॉलमों में डेटा को प्रतिस्थापित कर देंगे।

स्थिति

सारणी( सरणी), जिनकी कुंजियाँ तालिका के स्तंभों के नाम से मेल खाती हैं, tables_name । केवल वे पंक्तियाँ जिनके फ़ील्ड मान सरणी मानों से मेल खाते हैं, अद्यतन की जाएंगी।

विकल्प

स्थिरांकों में से एक PGSQL_CONV_OPTS, PGSQL_DML_NO_CONV, PGSQL_DML_ESCAPE, PGSQL_DML_EXEC, PGSQL_DML_ASYNCया PGSQL_DML_STRING, या उनका एक संयोजन। यदि विकल्प शामिल हैं PGSQL_DML_STRING, फ़ंक्शन एक स्ट्रिंग लौटाएगा। यदि स्थापित है PGSQL_DML_NO_CONVया PGSQL_DML_ESCAPE, फिर फ़ंक्शन pg_convert()आंतरिक रूप से नहीं बुलाया गया.

मान लौटाएँ

रिटर्न सत्यसफल समापन पर या असत्यत्रुटि होने पर. फ़ंक्शन स्ट्रिंग लौटाएगा ( डोरी), यदि स्थिर है PGSQL_DML_STRINGविकल्पों में निहित है।

उदाहरण

उदाहरण #1 उपयोग उदाहरण pg_update()

$db = pg_connect('dbname=foo' );
$ डेटा = सरणी ("फ़ील्ड1" => "एए", "फ़ील्ड2" => "बीबी");

// यह सुरक्षित है क्योंकि $_POST स्वचालित रूप से परिवर्तित हो जाता है
$res = pg_update ($db, "post_log", $_POST, $data);
यदि ($res) (
गूंज "डेटा अपडेट किया गया:$res\n" ;
) अन्य (
गूंज "अमान्य डेटा भेजा गया होगा\n";
}
?>

पोस्टग्रेज, मूल रूप से यूसी बर्कले कंप्यूटर विज्ञान विभाग द्वारा विकसित किया गया था, जिसने अब कुछ वाणिज्यिक डेटाबेस में उपलब्ध कई ऑब्जेक्ट-ओरिएंटेड अवधारणाओं का बीड़ा उठाया है। यह SQL92/SQL99 भाषा, लेनदेन अखंडता और प्रकार विस्तारशीलता के लिए समर्थन प्रदान करता है। PostgreSQL मूल बर्कले कोड का एक खुला स्रोत वंशज है।

PostgreSQL निःशुल्क उपलब्ध उत्पाद है। PostgreSQL समर्थन का उपयोग करने के लिए, आपको PostgreSQL 6.5 या बाद के संस्करण की आवश्यकता है। PostgreSQL 7.0 या बाद का संस्करण - सभी PostgreSQL मॉड्यूल सुविधाओं के लिए। PostgreSQL मल्टीबाइट कैरेक्टर एन्कोडिंग सहित कई कैरेक्टर एन्कोडिंग का समर्थन करता है। PostgreSQL के बारे में वर्तमान संस्करण और जानकारी http://www.postgresql.org/ पर पाई जा सकती है।

PostgreSQL समर्थन को सक्षम करने के लिए, PHP संकलित करते समय --with-pgsql[=DIR] विकल्प की आवश्यकता होती है। यदि साझा ऑब्जेक्ट मॉड्यूल उपलब्ध है, तो PostgreSQL मॉड्यूल को php.ini फ़ाइल या फ़ंक्शन में एक्सटेंशन निर्देश का उपयोग करके लोड किया जा सकता है डीएल(). समर्थित ini निर्देश वितरण स्रोत कोड के साथ आपूर्ति की गई php.ini-dist फ़ाइल में वर्णित हैं।

तालिका नंबर एक।फ़ंक्शन का नाम बदलता है
पुराना नामनया नाम
pg_exec() pg_query()
pg_getlastoid() pg_last_oid()
pg_cmdtuples() pg_प्रभावित_पंक्तियाँ()
pg_numrows() pg_num_rows()
pg_numfields() pg_num_fields()
pg_फ़ील्डनाम() pg_फ़ील्ड_नाम()
pg_फ़ील्डआकार() pg_फ़ील्ड_आकार()
pg_fieldnum() pg_field_num()
pg_fieldprtlen() pg_field_prtlen()
pg_fieldisnull() pg_field_is_null()
pg_freeresult() pg_free_result()
pg_परिणाम() pg_fetch_result()
pg_loreadall() pg_lo_read_all()
pg_locreate() pg_lo_create()
pg_lounlink() pg_lo_अनलिंक()
pg_loopen() pg_lo_open()
pg_loclose() pg_lo_close()
pg_loread() pg_lo_read()
pg_lowrite() pg_lo_write()
pg_loimport() pg_lo_आयात()
pg_loexport() pg_lo_export()

सभी बिल्ड में सभी सुविधाएँ समर्थित नहीं हैं। यह आपके libpq (पोस्टग्रेएसक्यूएल सी क्लाइंट इंटरफ़ेस) के संस्करण और libpq को संकलित करने के तरीके पर निर्भर करता है। यदि कोई फ़ंक्शन गुम है, तो libpq उस फ़ंक्शन के लिए आवश्यक क्षमताओं का समर्थन नहीं करता है।

यह भी महत्वपूर्ण है कि आप एक ऐसे libpq का उपयोग करें जो उस PostgreSQL सर्वर से नया हो जिससे आप कनेक्ट कर रहे हैं। यदि आप एक ऐसे libpq का उपयोग कर रहे हैं जो PostgreSQL सर्वर की अपेक्षा से पुराना है, तो आपको समस्याएँ होंगी।

संस्करण 6.3 (02/03/1998) के बाद से, PostgreSQL डिफ़ॉल्ट रूप से एक यूनिक्स डोमेन सॉकेट का उपयोग करता है। टीसीपी पोर्ट डिफ़ॉल्ट रूप से नहीं खोला जाता है। तालिका इन नए कनेक्शन विकल्पों का वर्णन करती है। यह सॉकेट /tmp/.s.PGSQL.5432 में पाया जा सकता है। इस विकल्प को "-i" ध्वज के साथ सक्षम किया जा सकता है डाकपाल, और इसका मान होगा: "टीसीपी/आईपी सॉकेट के साथ-साथ यूनिक्स डोमेन सॉकेट को भी सुनें।"

तालिका 2. पोस्टमास्टर और पीएचपी

PostgreSQL सर्वर से कनेक्शन कमांड लाइन पर मानों के निम्नलिखित जोड़े के साथ स्थापित किया जा सकता है: $conn = pg_connect("host=myHost port=myPort tty=myTTY विकल्प=myOptions dbname=myDB उपयोगकर्ता=myUser पासवर्ड=myPassword");

पिछला वाक्यविन्यास: $conn = pg_connect("होस्ट", "पोर्ट", "विकल्प", "tty", "dbname")अब अनुशंसित नहीं है.

पर्यावरण चर PostgreSQL सर्वर/क्लाइंट के व्यवहार को प्रभावित करते हैं। उदाहरण के लिए, यदि होस्टनाम कनेक्शन स्ट्रिंग में नहीं है तो PostgreSQL मॉड्यूल PGHOST पर्यावरण चर की तलाश करेगा। समर्थित पर्यावरण चर संस्करणों के बीच भिन्न होते हैं। विवरण के लिए PostgreSQL प्रोग्रामर मैनुअल (libpq - पर्यावरण चर) देखें।

सुनिश्चित करें कि आपने उपयुक्त उपयोगकर्ता के लिए पर्यावरण चर सेट किए हैं। $_ENV या का उपयोग करें getenv()यह जांचने के लिए कि वर्तमान प्रक्रिया के लिए कौन से पर्यावरण चर उपलब्ध हैं।

PostgreSQL 7.1.0 से शुरू करके, आप टेक्स्ट फ़ील्ड में 1GB स्टोर कर सकते हैं। पुराने संस्करणों में ब्लॉक आकार प्रतिबंध हो सकते हैं (डिफ़ॉल्ट 8KB था, अधिकतम 32KB था, संकलन समय पर निर्धारित किया गया था)।

बड़े ऑब्जेक्ट (लो) इंटरफ़ेस का उपयोग करने के लिए, आपको लेनदेन ब्लॉक के अंदर लो फ़ंक्शन शामिल करना होगा। एक लेन-देन ब्लॉक SQL स्टेटमेंट से शुरू होता है शुरू, और यदि लेनदेन सही था, तो समाप्त हो जाता है प्रतिबद्धया अंत. यदि कोई लेनदेन विफल हो जाता है, तो उसे बंद कर देना चाहिए रोलबैकया गर्भपात.

बड़े ऑब्जेक्ट को बंद करने से पहले आपको PostgreSQL सर्वर से कनेक्शन बंद नहीं करना चाहिए।

सामग्री pg_affeded_rows - शामिल प्रविष्टियों की संख्या लौटाता है (स्टीम/टुपल्स) pg_cancel_query - async अनुरोध को रद्द करता है pg_client_encoding - ग्राहक कोडिंग प्राप्त करता है pg_close - postgreSQL कनेक्शन बंद करता है PG_ConNNECT - पोस्टेग Rescl कनेक्शन खोलता है PG_ConNECTION_BUSY - प्राप्त करता है कि कनेक्शन बंद है या नहीं pg_connection_Reset - पुनर्स्थापित करता है कनेक्शन (पुनः कनेक्ट) pg_connection_status - कनेक्शन स्थिति प्राप्त करता है pg_convert - एक सहयोगी सरणी के मान को SQL कथन के लिए उपयुक्त मान में परिवर्तित करता है pg_copy_from - एक सरणी से तालिका में रिकॉर्ड सम्मिलित करता है pg_copy_to - एक तालिका को एक सरणी में कॉपी करता है pg_dbname - डेटाबेस नाम प्राप्त करता है pg_delete - रिकॉर्ड हटाता है pg_end_copy - PostgreSQL बैकएंड pg_escape_bytea के साथ सिंक्रोनाइज़ करता है - बाइट टाइप pg_escape_string के लिए बाइनरी को याद करता है / एस्केप करता है - टाइप टेक्स्ट/char pg_fetch_array के लिए स्ट्रिंग को याद करता है - एक पंक्ति को एक सरणी pg_fetch_object के रूप में पुनर्प्राप्त करता है - एक पंक्ति को ऑब्जेक्ट pg_fetch_result के रूप में पुनर्प्राप्त करता है - मान लौटाता है परिणामी संसाधन pg_fetch_row से - एक पंक्ति को एक गणना योग्य सरणी के रूप में पुनर्प्राप्त करता है pg_field_is_null - जाँचता है कि कोई फ़ील्ड है या नहीं व्यर्थ pg_field_name - फ़ील्ड का नाम लौटाता है pg_field_num - नामित फ़ील्ड की संख्या लौटाता है pg_field_prtlen - मुद्रण योग्य आकार pg_field_size लौटाता है - नामित फ़ील्ड का आंतरिक संग्रहण आकार लौटाता है pg_field_type - संबंधित फ़ील्ड संख्या के लिए प्रकार का नाम लौटाता है

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_convert — SQL क्वेरी में उपयोग के लिए एसोसिएटिव सरणी के मानों को स्वीकार्य मानों में परिवर्तित करता है

विवरण

pg_convert (संसाधन $कनेक्शन , स्ट्रिंग $table_name , सरणी $assoc_array [, int $ विकल्प = 0]) : सारणी

pg_convert()जाँचता है और assoc_array से SQL सर्वर के लिए स्वीकार्य मानों में परिवर्तित करता है। तालिका तालिका_नाम मौजूद होनी चाहिए, और इसमें स्तंभों की संख्या assoc_array सरणी में मानों से कम नहीं होनी चाहिए। Table_name तालिका में कॉलम नाम assoc_array सरणी की कुंजियों से मेल खाना चाहिए, और सरणी मानों के डेटा प्रकार को संबंधित कॉलम के डेटा प्रकारों से भी मेल खाना चाहिए। यदि रूपांतरण सफल होता है, तो फ़ंक्शन परिवर्तित मानों की एक श्रृंखला लौटाता है, अन्यथा यह लौटाता है असत्य.

टिप्पणी:

PHP 5.6.0 के अनुसार, बूलियन मानों की अनुमति है। उन्हें PostgreSQL बूलियन प्रकार में परिवर्तित किया जाता है। बूलियन मान का स्ट्रिंग प्रस्तुतीकरण भी समर्थित है। व्यर्थ PostgreSQL NULL में बदल दिया गया है।

PHP 5.6.0 से पहले, यदि तालिका टेबल_नाम में बूलियन फ़ील्ड हैं, तो स्थिरांक का उपयोग न करें सत्यइन फ़ील्ड के लिए टेबल_नाम सरणी के मान के रूप में। इसे स्ट्रिंग "TRUE" में बदल दिया जाएगा, जो PostgreSQL में बूलियन फ़ील्ड के लिए एक अमान्य मान है। "t", "true", "1", "y", "yes" मानों का उपयोग करें।

मापदंडों की सूची

PostgreSQL डेटाबेस कनेक्शन संसाधन।

तालिका नाम

डेटाबेस तालिका का नाम.

Assoc_array

कनवर्ट करने के लिए डेटा.

विकल्प

स्थिरांकों में से एक PGSQL_CONV_IGNORE_DEFAULT, PGSQL_CONV_FORCE_NULLया PGSQL_CONV_IGNORE_NOT_NULL, या उनका एक संयोजन।

मान लौटाएँ

सारणी( सरणी), जिसमें परिवर्तित डेटा शामिल है, या असत्यत्रुटि के मामले में.

उदाहरण

उदाहरण #1 उपयोग उदाहरण pg_convert()

$dbconn = pg_connect ("dbname=foo");

$tmp = सरणी(
"लेखक" => "जो थैकेरी",
"वर्ष" => 2005,
"शीर्षक" => "माई लाइफ, जो थैकेरी द्वारा"
);

$vals = pg_convert ($dbconn, "लेखक", $tmp);
?>