PostgreSQL ফাংশন। LXXX। PostgreSQL বৈশিষ্ট্য ডাটাবেস আকার

স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি , STL) C++ ভাষার স্ট্যান্ডার্ড লাইব্রেরিতে অন্তর্ভুক্ত। এটিতে সর্বাধিক ব্যবহৃত কন্টেইনার এবং অ্যালগরিদমগুলির বাস্তবায়ন অন্তর্ভুক্ত, যা প্রোগ্রামারদের বারবার পুনরায় লেখার রুটিন থেকে বাঁচায়। কন্টেইনার তৈরি করার সময় এবং সেগুলিতে প্রয়োগ করা অ্যালগরিদমগুলি (যেমন অভিন্ন উপাদানগুলি সরানো, বাছাই করা, অনুসন্ধান করা ইত্যাদি), হয় বহুমুখিতা বা কর্মক্ষমতা প্রায়শই বলি দিতে হয়৷ যাইহোক, এসটিএল ডেভেলপাররা নিজেদের লাইব্রেরীটিকে দক্ষ এবং সর্বজনীন করার কাজটি নির্ধারণ করে। এই সমস্যাটি সমাধান করার জন্য, টেমপ্লেট এবং অপারেটর ওভারলোডিংয়ের মতো C++ ভাষার সর্বজনীন উপায় ব্যবহার করা হয়েছিল। নিম্নলিখিত উপস্থাপনায় আমরা ভিজ্যুয়াল C++ 6.0 কম্পাইলারের সাথে Microsoft দ্বারা সরবরাহকৃত STL বাস্তবায়নের উপর নির্ভর করব। যাইহোক, উপরের বেশিরভাগ অন্যান্য কম্পাইলার দ্বারা STL বাস্তবায়নের জন্যও সত্য হবে।

STL-এর প্রধান ধারণাগুলি হল ধারক (ধারক), অ্যালগরিদম (অ্যালগরিদম) এবং পুনরাবৃত্তিকারী (পুনরাবৃত্ত) ধারণা।

ধারকবস্তুর একটি স্টোর (উভয় অন্তর্নির্মিত এবং ব্যবহারকারী-সংজ্ঞায়িত প্রকার)। সাধারণত, কন্টেইনারগুলি ক্লাস টেমপ্লেট হিসাবে প্রয়োগ করা হয়। সহজ ধরনের পাত্রে (স্ট্যাটিক এবং ডাইনামিক অ্যারে) সরাসরি C++ ভাষায় তৈরি করা হয়। উপরন্তু, স্ট্যান্ডার্ড লাইব্রেরিতে ভেক্টর, তালিকা, সারি, মানচিত্র, সেট এবং অন্যান্য কিছুর মতো পাত্রের বাস্তবায়ন অন্তর্ভুক্ত রয়েছে।

অ্যালগরিদমএকটি পাত্রে থাকা বস্তুগুলিকে ম্যানিপুলেট করার জন্য একটি ফাংশন। অ্যালগরিদমের সাধারণ উদাহরণ হল সাজানো এবং অনুসন্ধান করা। STL প্রায় 60টি অ্যালগরিদম প্রয়োগ করে যা C++ ভাষায় নির্মিত অ্যারে সহ বিভিন্ন পাত্রে প্রয়োগ করা যেতে পারে।

পুনরাবৃত্তিকারীএকটি পয়েন্টারের একটি বিমূর্ততা, অর্থাৎ, একটি বস্তু যা ধারকটিতে থাকা অন্যান্য বস্তুর উল্লেখ করতে পারে। একটি পুনরাবৃত্তিকারীর প্রধান কাজ হল এটি যে বস্তুটিকে নির্দেশ করে (ডিরেফারেন্সিং) অ্যাক্সেস প্রদান করা এবং একটি কন্টেইনার উপাদান থেকে অন্যটিতে (পুনরাবৃত্তি, তাই নাম পুনরাবৃত্তিকারী) স্থানান্তর করা। অন্তর্নির্মিত কন্টেইনারগুলির জন্য, নিয়মিত পয়েন্টারগুলি পুনরাবৃত্তিকারী হিসাবে ব্যবহৃত হয়। আরও জটিল কন্টেইনারের ক্ষেত্রে, ইটারেটরগুলি ওভারলোডেড অপারেটরগুলির একটি সেট সহ ক্লাস হিসাবে প্রয়োগ করা হয়।

STL-এ চিহ্নিত উপাদানগুলি ছাড়াও একটি সংখ্যা রয়েছে সহায়ক ধারণা ; আপনি তাদের কিছু জানতে হবে.

বরাদ্দকারী(বরাদ্দকারী) একটি বস্তু যা ধারক উপাদানগুলির জন্য মেমরি বরাদ্দ করার জন্য দায়ী। একটি বরাদ্দকারী প্রতিটি স্ট্যান্ডার্ড কন্টেইনারের সাথে যুক্ত থাকে (এর ধরনটি টেমপ্লেট প্যারামিটারগুলির একটি হিসাবে পাস করা হয়)। যদি কিছু অ্যালগরিদমকে উপাদানগুলির জন্য মেমরি বরাদ্দ করতে হয় তবে এটি অবশ্যই একটি বরাদ্দকারীর মাধ্যমে করতে হবে। এই ক্ষেত্রে, আপনি নিশ্চিত হতে পারেন যে বিতরণ করা বস্তু সঠিকভাবে ধ্বংস হবে।

STL একটি আদর্শ বরাদ্দকারী শ্রেণী অন্তর্ভুক্ত করে (xmemory ফাইলে বর্ণিত)। ডিফল্টরূপে STL ব্যবহার করা সমস্ত কন্টেইনার এটিই। যাইহোক, ব্যবহারকারী তার নিজস্ব ক্লাস বাস্তবায়ন করতে পারেন। এটি খুব কমই প্রয়োজনীয়, তবে কখনও কখনও দক্ষতা বা ডিবাগিং উদ্দেশ্যে করা যেতে পারে।

আসুন আমরা প্রবর্তিত ধারণাগুলির বিবেচনায় আরও বিশদে থাকি।

পাত্রে . প্রতিটি ধারক একটি কঠোরভাবে সংজ্ঞায়িত ইন্টারফেস প্রদান করে যার মাধ্যমে অ্যালগরিদম এটির সাথে যোগাযোগ করবে। ধারক-নির্দিষ্ট পুনরাবৃত্তিকারী এই ইন্টারফেস প্রদান করে। এটি জোর দেওয়া গুরুত্বপূর্ণ যে অ্যালগরিদম এবং কন্টেইনারগুলির মধ্যে ইন্টারঅ্যাক্ট করার জন্য কোনও অতিরিক্ত সদস্য ফাংশন ব্যবহার করা হয় না। এটি করা হয়েছে কারণ স্ট্যান্ডার্ড অ্যালগরিদমগুলিকে অবশ্যই কাজ করতে হবে, যার মধ্যে C++ ভাষার অন্তর্নির্মিত কন্টেনারগুলি অন্তর্ভুক্ত রয়েছে, যার পুনরাবৃত্তিকারী (পয়েন্টার) আছে কিন্তু অন্য কিছুই নয়। সুতরাং, আপনার নিজস্ব ধারক তৈরি করার সময়, একটি পুনরাবৃত্তিকারী প্রয়োগ করা সর্বনিম্ন।

প্রতিটি ধারক একটি নির্দিষ্ট ধরনের পুনরাবৃত্তিকারী প্রয়োগ করে। এটি সবচেয়ে কার্যকরী পুনরাবৃত্তিকারী প্রকার নির্বাচন করে যা একটি প্রদত্ত ধারকটির জন্য কার্যকরভাবে প্রয়োগ করা যেতে পারে। "দক্ষ" এর অর্থ হল পুনরাবৃত্তিকারীতে ক্রিয়াকলাপ সম্পাদনের গতি পাত্রে উপাদানগুলির সংখ্যার উপর নির্ভর করবে না। উদাহরণস্বরূপ, একটি ভেক্টরের জন্য একটি র্যান্ডম অ্যাক্সেস ইটারেটর প্রয়োগ করা হয় এবং একটি তালিকার জন্য একটি দ্বিমুখী পুনরাবৃত্তিকারী প্রয়োগ করা হয়। যেহেতু একটি তালিকা অপারেশনের গতি তার দৈর্ঘ্যের সাথে রৈখিক হয়, একটি তালিকার জন্য একটি র্যান্ডম অ্যাক্সেস পুনরাবৃত্তিকারী প্রয়োগ করা হয় না।

ধারকটির প্রকৃত সংগঠন (ভেক্টর, তালিকা, গাছ) নির্বিশেষে, এতে সংরক্ষিত উপাদানগুলিকে একটি ক্রম হিসাবে বিবেচনা করা যেতে পারে। এই সিকোয়েন্সের প্রথম এলিমেন্টের ইটারেটরটি begin() ফাংশন দ্বারা ফেরত দেওয়া হয় এবং শেষের অনুসারী এলিমেন্টের ইটারেটরটি end() ফাংশন দ্বারা ফেরত দেওয়া হয়। এটি খুবই গুরুত্বপূর্ণ, যেহেতু STL-এর সমস্ত অ্যালগরিদম সূচনা এবং শেষ পুনরাবৃত্তিকারীদের দ্বারা নির্দিষ্ট ক্রমগুলির সাথে সুনির্দিষ্টভাবে কাজ করে।

STL এ নিয়মিত পুনরাবৃত্তিকারী ছাড়াও, বিপরীত পুনরাবৃত্তিকারী রয়েছে (বিপরীত পুনরাবৃত্তিকারী ) একটি বিপরীত পুনরাবৃত্তিকারী ভিন্ন যে এটি বিপরীত ক্রমে একটি পাত্রে উপাদানগুলির অনুক্রমের মাধ্যমে পুনরাবৃত্তি করে। অন্য কথায়, অপারেশন + এবং - বিপরীত হয়। এটি অ্যালগরিদমগুলিকে উপাদানগুলির সরাসরি এবং বিপরীত উভয় ক্রমগুলিতে প্রয়োগ করার অনুমতি দেয়। উদাহরণস্বরূপ, ফাইন্ড ফাংশন ব্যবহার করে, আপনি একটি ধারকটির "শুরু" এবং "শেষ" উভয় থেকে উপাদানগুলি অনুসন্ধান করতে পারেন।

STL-এ, কন্টেইনারগুলিকে তিনটি প্রধান গ্রুপে বিভক্ত করা হয়েছে (সারণী 2): সিকোয়েন্স কনটেইনার, অ্যাসোসিয়েটিভ কন্টেনার এবং কন্টেইনার অ্যাডাপ্টার। প্রথম দুটি গ্রুপ প্রথম শ্রেণীর পাত্রে মিলিত হয়।

টেবিল ২

কন্টেইনার ক্লাস STL

বর্ণনা

ক্রম পাত্রে

ভেক্টর

ডায়নামিক অ্যারে

deque

দ্বিমুখী সারি

তালিকা

দ্বিমুখী রৈখিক তালিকা

সহযোগী পাত্রে

অনন্য কী সহ সহযোগী ধারক

মাল্টিসেট

ডুপ্লিকেট কী মঞ্জুরি দেয় সহযোগী ধারক

অনন্য উপাদানের সেটের জন্য সহযোগী ধারক

মাল্টিম্যাপ

ডুপ্লিকেট উপাদান সহ সেটের জন্য সহযোগী ধারক

কন্টেইনার অ্যাডাপ্টার

স্ট্যাক

স্ট্যান্ডার্ড স্ট্যাক

কিউ

স্ট্যান্ডার্ড সারি

অগ্রাধিকার_সারি

অগ্রাধিকার সারি

প্রতিটি কন্টেইনার ক্লাস বাস্তবায়িত হয় STL , পাত্রের সাথে সম্পর্কিত প্রকারের সেট বর্ণনা করে। আপনার নিজের পাত্রে লেখার সময় আপনি এই একই অভ্যাস অনুসরণ করা উচিত. এখানে সবচেয়ে গুরুত্বপূর্ণ ধরনের একটি তালিকা আছে:

value_type - উপাদান প্রকার;

আকারের ধরণ - উপাদানের সংখ্যা সংরক্ষণের জন্য একটি প্রকার (সাধারণত size_t);

পুনরাবৃত্তিকারী - ধারক উপাদানগুলির জন্য পুনরাবৃত্তিকারী;

চাবির ধরন - কী প্রকার (একটি সহযোগী পাত্রে)।

প্রকারগুলি ছাড়াও, আমরা ফাংশনের একটি সেটকে আলাদা করতে পারি যা STL-এর প্রায় প্রতিটি কন্টেইনার প্রয়োগ করে (সারণী 3)। অ্যালগরিদমগুলির সাথে মিথস্ক্রিয়া করার জন্য তাদের প্রয়োজন নেই, তবে তাদের বাস্তবায়ন প্রোগ্রামে কন্টেইনারগুলির বিনিময়যোগ্যতা উন্নত করে। STL ডিজাইন করা হয়েছে যাতে পাত্রে একই ধরনের কার্যকারিতা প্রদান করে।

টেবিল 3

সমস্ত STL পাত্রে সাধারণ পদ্ধতি

বর্ণনা

ডিফল্ট কনস্ট্রাক্টর

ডিফল্ট কনস্ট্রাক্টর। সাধারণত একটি পাত্রে বেশ কিছু থাকেডিজাইনার

কপি কনস্ট্রাক্টর

কপি কনস্ট্রাক্টর

ধ্বংসকারী

ধ্বংসকারী

খালি

পাত্রে কোনো উপাদান না থাকলে সত্য দেখায়, অন্যথায় মিথ্যা

max_size

একটি ধারক জন্য উপাদানের সর্বাধিক সংখ্যা প্রদান করে

আকার

বর্তমান সময়ে কন্টেইনারে উপাদানের সংখ্যা প্রদান করে

অপারেটর =

এক পাত্রে অন্যকে বরাদ্দ করে

অপারেটর<

প্রথম ধারকটি দ্বিতীয়টির চেয়ে ছোট হলে সত্য দেখায়, অন্যথায় মিথ্যা

অপারেটর<=

প্রথম ধারকটি দ্বিতীয়টির চেয়ে বড় না হলে সত্য দেখায়, অন্যথায় মিথ্যা

অপারেটর >

প্রথম ধারকটি দ্বিতীয়টির চেয়ে বড় হলে সত্য দেখায়, অন্যথায় মিথ্যা

অপারেটর >=

প্রথম ধারকটি দ্বিতীয়টির থেকে ছোট না হলে সত্য দেখায়, অন্যথায় মিথ্যা

অপারেটর ==

তুলনা করা পাত্র সমান হলে সত্য দেখায়, অন্যথায় মিথ্যা

অপারেটর!=

তুলনা করা পাত্র সমান না হলে সত্য দেখায়, অন্যথায় মিথ্যা

অদলবদল

দুটি পাত্রের উপাদান অদলবদল করে

বৈশিষ্ট্য শুধুমাত্র প্রথম শ্রেণীর পাত্রে উপলব্ধ

শুরু

এই ফাংশনের দুটি সংস্করণ হয় একটি পুনরাবৃত্তিকারী বা একটি const_iterator প্রদান করে, যা ধারকটির প্রথম উপাদানকে বোঝায়

এই ফাংশনের দুটি সংস্করণ হয় একটি পুনরাবৃত্তিকারী বা একটি কনস্ট_ইটারেটর প্রদান করে, যা কন্টেইনার শেষ হওয়ার পর পরবর্তী অবস্থানকে নির্দেশ করে

আরম্ভ

এই ফাংশনের দুটি সংস্করণ হয় ফিরে আসে reverse_iterator বা reverse_const_iterator , যা ধারকটির শেষ উপাদানটিকে বোঝায়

ছিঁড়ে ফেলা

এই ফাংশনের দুটি সংস্করণ একটি reverse_iterator বা একটি reverse_const_iterator প্রদান করে, যা ধারকটির প্রথম উপাদানের আগে অবস্থানকে নির্দেশ করে

সন্নিবেশ করা, মুছে ফেলা,

আপনাকে একটি অনুক্রমের মাঝখানে উপাদান(গুলি) সন্নিবেশ বা অপসারণ করার অনুমতি দেয়

শেষ টেবিল 3

পরিষ্কার

একটি ধারক থেকে সমস্ত উপাদান সরান

সামনে পিছনে

push_back, pop_back

আপনাকে একটি ক্রমানুসারে শেষ উপাদান যোগ করতে বা অপসারণ করতে দেয়

push_front, pop_front

আপনাকে একটি ক্রমানুসারে প্রথম উপাদান যোগ করতে বা অপসারণ করতে দেয়

ইটারেটরগুলি সাধারণত তারা যে ক্লাসগুলিতে কাজ করে তার বন্ধু হিসাবে তৈরি করা হয়, সেই ক্লাসগুলির ব্যক্তিগত ডেটাতে সরাসরি অ্যাক্সেসের অনুমতি দেয়। একটি একক ধারক এর সাথে যুক্ত একাধিক পুনরাবৃত্তিকারী থাকতে পারে, যার প্রতিটি তার নিজস্ব "অবস্থানগত তথ্য" (সারণী 4) বজায় রাখে।

টেবিল 4

পুনরাবৃত্তিকারী প্রকার

অ্যাক্সেস

ডিরেফারেন্সিং

পুনরাবৃত্তি

তুলনা

আউটপুট ইটারেটর

(আউটপুট পুনরাবৃত্তিকারী)

শুধুমাত্র রেকর্ডিং

ইনপুট ইটারেটর

(ইনপুট পুনরাবৃত্তিকারী)

শুধু পড়া

*, ->

==, !=

ফরোয়ার্ড পুনরাবৃত্তিকারী

(ফরোয়ার্ড পুনরাবৃত্তিকারী)

পড় ও লিখ

*, ->

==, !=

দ্বিমুখী পুনরাবৃত্তিকারী(দ্বিমুখী পুনরাবৃত্তিকারী)

পড় ও লিখ

*, ->

++, --

==, !=

এলোমেলো অ্যাক্সেস পুনরাবৃত্তিকারী

(এলোমেলো - অ্যাক্সেস পুনরাবৃত্তিকারী)

পড় ও লিখ

*, ->,

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

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

pg_update (সম্পদ $সংযোগ , স্ট্রিং $table_name , অ্যারে $ডেটা , অ্যারে $ শর্ত [, int $options = PGSQL_DML_EXEC ])

pg_update()সারণীতে রেকর্ড প্রতিস্থাপন করে যা শর্ত পূরণ করে অবস্থাতথ্য তথ্য. যদি যুক্তি দেওয়া হয় বিকল্প, তথ্য ফাংশন দ্বারা রূপান্তরিত করা হবে pg_convert(), যা এই যুক্তি থেকে পরামিতি পাস করা হবে.

প্যারামিটারের তালিকা

PostgreSQL ডাটাবেস সংযোগ সংস্থান।

টেবিল_নাম

রেকর্ড আপডেট করা হয় যে টেবিলের নাম.

অ্যারে( অ্যারে), যেগুলির কীগুলি টেবিল_নাম টেবিলের কলামগুলির নামের সাথে মিলে যায় এবং মানগুলি এই কলামগুলির ডেটা প্রতিস্থাপন করবে।

অবস্থা

অ্যারে( অ্যারে), যার কীগুলি টেবিলের কলামের নামের সাথে মিলে যায় table_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");
$data = array("field1" => "AA" , "field2" => "BB");

// এটি নিরাপদ যেহেতু $_POST স্বয়ংক্রিয়ভাবে রূপান্তরিত হয়৷
$res = pg_update ($db, "post_log", $_POST, $data);
যদি ($res) (
প্রতিধ্বনি "ডেটা আপডেট করা হয়েছে:$res\n" ;
) অন্য (
প্রতিধ্বনি "অবৈধ ডেটা অবশ্যই পাঠানো হয়েছে\n";
}
?>

pg_update (সম্পদ $সংযোগ , স্ট্রিং $table_name , অ্যারে $ডেটা , অ্যারে $ শর্ত [, int $options = PGSQL_DML_EXEC ])

pg_update()সারণীতে রেকর্ড প্রতিস্থাপন করে যা শর্ত পূরণ করে অবস্থাতথ্য তথ্য. যদি যুক্তি দেওয়া হয় বিকল্প, তথ্য ফাংশন দ্বারা রূপান্তরিত করা হবে pg_convert(), যা এই যুক্তি থেকে পরামিতি পাস করা হবে.

প্যারামিটারের তালিকা

PostgreSQL ডাটাবেস সংযোগ সংস্থান।

টেবিল_নাম

রেকর্ড আপডেট করা হয় যে টেবিলের নাম.

অ্যারে( অ্যারে), যেগুলির কীগুলি টেবিল_নাম টেবিলের কলামগুলির নামের সাথে মিলে যায় এবং মানগুলি এই কলামগুলির ডেটা প্রতিস্থাপন করবে।

অবস্থা

অ্যারে( অ্যারে), যার কীগুলি টেবিলের কলামের নামের সাথে মিলে যায় table_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");
$data = array("field1" => "AA" , "field2" => "BB");

// এটি নিরাপদ যেহেতু $_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] বিকল্পটি প্রয়োজন। শেয়ার্ড অবজেক্ট মডিউল উপলব্ধ থাকলে, php.ini ফাইল বা ফাংশনে এক্সটেনশন নির্দেশিকা ব্যবহার করে PostgreSQL মডিউল লোড করা যেতে পারে dl(). ডিস্ট্রিবিউশন সোর্স কোডের সাথে সরবরাহ করা php.ini-dist ফাইলে সমর্থিত ini নির্দেশাবলী বর্ণনা করা হয়েছে।

1 নং টেবিল.ফাংশন নাম পরিবর্তন
পুরাতন নামনতুন নাম
pg_exec() pg_query()
pg_getlastoid() pg_last_oid()
pg_cmdtuples() pg_ প্রভাবিত_সারি()
pg_numrows() pg_num_rows()
pg_numfields() pg_num_fields()
pg_fieldname() pg_field_name()
pg_fieldsize() pg_field_size()
pg_fieldnum() pg_field_num()
pg_fieldprtlen() pg_field_prtlen()
pg_fieldisnull() pg_field_is_null()
pg_freeresult() pg_free_result()
pg_result() pg_fatch_result()
pg_loreadall() pg_lo_read_all()
pg_locreate() pg_lo_create()
pg_lounlink() pg_lo_unlink()
pg_loopen() pg_lo_open()
pg_loclose() pg_lo_close()
pg_loread() pg_lo_read()
pg_lowrite() pg_lo_write()
pg_loimport() pg_lo_import()
pg_loexport() pg_lo_export()

সমস্ত বিল্ডে সমস্ত বৈশিষ্ট্য সমর্থিত নয়। এটি আপনার libpq (The PostgreSQL C ক্লায়েন্ট ইন্টারফেস) সংস্করণ এবং কিভাবে libpq সংকলিত হয় তার উপর নির্ভর করে। যদি একটি অনুপস্থিত ফাংশন থাকে, libpq সেই ফাংশনের জন্য প্রয়োজনীয় ক্ষমতাগুলিকে সমর্থন করে না।

এটিও গুরুত্বপূর্ণ যে আপনি একটি libpq ব্যবহার করেন যা আপনি যে PostgreSQL সার্ভারের সাথে সংযোগ করছেন তার থেকে নতুন। আপনি যদি পোস্টগ্রেএসকিউএল সার্ভারের প্রত্যাশার চেয়ে পুরানো libpq ব্যবহার করেন তবে আপনার সমস্যা হবে।

সংস্করণ 6.3 (02/03/1998) থেকে, PostgreSQL ডিফল্টরূপে একটি ইউনিক্স ডোমেইন সকেট ব্যবহার করে। টিসিপি পোর্ট ডিফল্টরূপে খোলা হয় না। সারণী এই নতুন সংযোগ বিকল্পগুলি বর্ণনা করে। এই সকেটটি /tmp/.s.PGSQL.5432 এ পাওয়া যাবে। এই বিকল্পটির জন্য "-i" পতাকা দিয়ে সক্রিয় করা যেতে পারে পোস্টমাস্টার, এবং এর মান হবে: "TCP/IP সকেটের পাশাপাশি ইউনিক্স ডোমেইন সকেটগুলি শুনুন।"

সারণি 2. পোস্টমাস্টার এবং পিএইচপি

PostgreSQL সার্ভারের সাথে একটি সংযোগ স্থাপন করা যেতে পারে কমান্ড লাইনে নিম্নলিখিত জোড়া মানগুলির সাথে: $conn = pg_connect("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser password=myPassword");

পূর্ববর্তী বাক্য গঠন: $conn = pg_connect("হোস্ট", "পোর্ট", ​​"বিকল্প", "tty", "dbname")আর সুপারিশ করা হয় না।

পরিবেশের ভেরিয়েবল PostgreSQL সার্ভার/ক্লায়েন্টের আচরণকে প্রভাবিত করে। উদাহরণস্বরূপ, PostgreSQL মডিউল PGHOST এনভায়রনমেন্ট ভেরিয়েবলের সন্ধান করবে যদি হোস্টনাম সংযোগ স্ট্রিং-এ না থাকে। সমর্থিত পরিবেশ ভেরিয়েবল সংস্করণের মধ্যে পার্থক্য. বিস্তারিত জানার জন্য PostgreSQL প্রোগ্রামারের ম্যানুয়াল (libpq - এনভায়রনমেন্ট ভেরিয়েবল) দেখুন।

নিশ্চিত করুন যে আপনি উপযুক্ত ব্যবহারকারীর জন্য পরিবেশ ভেরিয়েবল সেট করেছেন। $_ENV বা ব্যবহার করুন getenv()বর্তমান প্রক্রিয়ায় কোন পরিবেশের ভেরিয়েবল উপলব্ধ তা পরীক্ষা করতে।

PostgreSQL 7.1.0 দিয়ে শুরু করে, আপনি একটি টেক্সট ফিল্ডে 1GB সঞ্চয় করতে পারেন। পুরানো সংস্করণগুলিতে ব্লক আকারের সীমাবদ্ধতা থাকতে পারে (ডিফল্ট ছিল 8KB, সর্বাধিক ছিল 32KB, কম্পাইলের সময় নির্ধারিত)।

বড় অবজেক্ট (lo) ইন্টারফেস ব্যবহার করতে, আপনাকে অবশ্যই লেনদেন ব্লকের মধ্যে lo ফাংশন অন্তর্ভুক্ত করতে হবে। একটি লেনদেন ব্লক একটি SQL বিবৃতি দিয়ে শুরু হয় শুরু, এবং যদি লেনদেন সঠিক ছিল, শেষ হয় কমিটবা শেষ. একটি লেনদেন ব্যর্থ হলে, এটি সঙ্গে বন্ধ করা আবশ্যক রোলব্যাকবা ABORT.

বড় বস্তুটি বন্ধ করার আগে আপনার PostgreSQL সার্ভারের সাথে সংযোগ বন্ধ করা উচিত নয়।

বিষয়বস্তু pg_affeded_rows - জড়িত এন্ট্রির সংখ্যা ফেরত দেয় (steam/tuples) pg_cancel_query - async অনুরোধ বাতিল করে pg_client_encoding - গ্রাহক কোডিং পায় pg_close - postgreSQL কানেকশন বন্ধ করে PG_ConNNECT - খোলে posteg Rescl সংযোগ PG_ConNNECT - বন্ধ হয় pg_Conce সংযোগ বন্ধ হোক বা না হোক - সংযোগটি প্রাপ্ত না হোক - পিজি_সিএনসি-সংযোগ বন্ধ হোক বা না হোক আকরিক সংযোগ (পুনরায় সংযোগ) pg_connection_status - সংযোগ স্থিতি পায় pg_convert - একটি সহযোগী অ্যারের মানকে SQL স্টেটমেন্টের জন্য উপযুক্ত একটি মানতে রূপান্তর করে pg_copy_from - একটি অ্যারে থেকে একটি টেবিলে রেকর্ড সন্নিবেশ করায় pg_delete - রেকর্ড মুছে দেয় pg_end_copy - PostgreSQL ব্যাকএন্ডের সাথে সিঙ্ক্রোনাইজ করে pg_escape_bytea - বাইট টাইপের জন্য mnemonizes /escape binary pg_escape_string - টাইপ টেক্সটের জন্য mnemonizes স্ট্রিং _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 — এসকিউএল কোয়েরিতে ব্যবহারের জন্য একটি সহযোগী অ্যারের মানকে গ্রহণযোগ্য মানগুলিতে রূপান্তর করে

বর্ণনা

pg_convert (সম্পদ $সংযোগ , স্ট্রিং $table_name , অ্যারে $assoc_array [, int $বিকল্প = 0]): অ্যারে

pg_convert() assoc_array থেকে এসকিউএল সার্ভারে গ্রহণযোগ্য মানগুলি পরীক্ষা করে এবং রূপান্তর করে। টেবিল table_name অবশ্যই বিদ্যমান থাকতে হবে এবং এতে কলামের সংখ্যা অবশ্যই 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);
?>