PDO_MYSQL হল একটি ড্রাইভার যা PHP থেকে MySQL ডাটাবেসে অ্যাক্সেস সক্ষম করতে PHP ডেটা অবজেক্ট (PDO) ইন্টারফেস প্রয়োগ করে। 7.1.16-এর আগে পিএইচপি সংস্করণ চালানোর সময়, বা 7.2.4-এর আগে PHP 7.2, MySQL 8 সার্ভারের ডিফল্ট পাসওয়ার্ড প্লাগইনকে mysql_native_password-এ সেট করুন অন্যথায় আপনি ক্লায়েন্টের কাছে সার্ভারের অনুরোধকৃত প্রমাণীকরণ পদ্ধতির মতো ত্রুটি দেখতে পাবেন ব্যবহার করা হয় না এর কারণ হল MySQL 8 ডিফল্ট caching_sha2_password, একটি প্লাগইন যা পুরানো PHP (mysqlnd) রিলিজ দ্বারা স্বীকৃত নয়। পরিবর্তে, সেট করে এটি পরিবর্তন করুন। caching_sha2_password প্লাগইন ভবিষ্যতে পিএইচপি রিলিজে সমর্থিত হবে। ইতিমধ্যে, mysql_xdevapi এক্সটেনশন এটি সমর্থন করে। সতর্কতা সাবধান: কিছু MySQL টেবিল প্রকার (স্টোরেজ ইঞ্জিন) লেনদেন সমর্থন করে না। লেনদেন সমর্থন করে না এমন একটি টেবিলের প্রকার ব্যবহার করে লেনদেন সংক্রান্ত ডাটাবেস কোড লেখার সময়, MySQL ভান করবে যে একটি লেনদেন সফলভাবে শুরু হয়েছে। উপরন্তু, জারি করা যেকোনো DDL প্রশ্ন অন্তর্নিহিতভাবে কোনো মুলতুবি লেনদেন হবে। MySQL ড্রাইভার PDOStatement::bindParam এর মাধ্যমে সঠিকভাবে সমর্থন করে না যখন এই ধরনের প্যারামিটার ব্যবহার করা যেতে পারে, সেগুলি আপডেট করা হয় না (অর্থাৎ প্রকৃত আউটপুট উপেক্ষা করা হয়) সাধারণ ইউনিক্স ডিস্ট্রিবিউশনে পিএইচপি-র বাইনারি সংস্করণ রয়েছে যা ইনস্টল করা যেতে পারে। যদিও এই বাইনারি সংস্করণগুলি সাধারণত MySQL এক্সটেনশনগুলির সমর্থনে তৈরি করা হয়, তবে এক্সটেনশন লাইব্রেরিগুলিকে একটি অতিরিক্ত প্যাকেজ ব্যবহার করে ইনস্টল করার প্রয়োজন হতে পারে। উপলব্ধতার জন্য আপনার নির্বাচিত বিতরণের সাথে আসা প্যাকেজ ম্যানেজারটি দেখুন। উদাহরণস্বরূপ, উবুন্টুতে প্যাকেজটি ext/mysql, ext/mysqli এবং PDO_MYSQL পিএইচপি এক্সটেনশন ইনস্টল করে। CentOS এ, প্যাকেজটি এই তিনটি পিএইচপি এক্সটেনশনও ইনস্টল করে। বিকল্পভাবে, আপনি নিজেই এই এক্সটেনশনটি কম্পাইল করতে পারেন। উত্স থেকে PHP তৈরি করা আপনাকে MySQL এক্সটেনশনগুলি নির্দিষ্ট করতে দেয় যা আপনি ব্যবহার করতে চান, সেইসাথে প্রতিটি এক্সটেনশনের জন্য আপনার পছন্দের ক্লায়েন্ট লাইব্রেরি। কম্পাইল করার সময়, PDO MySQL এক্সটেনশন ইনস্টল করতে --with-pdo-mysql[=DIR] ব্যবহার করুন, যেখানে ঐচ্ছিক MySQL বেস লাইব্রেরি। Mysqlnd হল ডিফল্ট লাইব্রেরি। একটি লাইব্রেরি নির্বাচন করার বিষয়ে বিস্তারিত জানার জন্য, একটি MySQL লাইব্রেরি নির্বাচন করা দেখুন। ঐচ্ছিকভাবে, --with-mysql-sock[=DIR] PDO_MYSQL সহ সমস্ত MySQL এক্সটেনশনের জন্য MySQL ইউনিক্স সকেট পয়েন্টারে অবস্থান নির্ধারণ করে। অনির্দিষ্ট থাকলে, ডিফল্ট অবস্থানগুলি অনুসন্ধান করা হয়। ঐচ্ছিকভাবে, --with-zlib-dir[=DIR] libz ইন্সটল উপসর্গের পথ সেট করতে ব্যবহৃত হয়। উপযুক্ত PDO_MySQL ধ্রুবক ব্যবহার করে SSL সমর্থন সক্রিয় করা হয়েছে, যা ÃÂû MySQL C API ফাংশন mysql_ssl_set কল করার সমতুল্য, এছাড়াও, সংযোগটি ইতিমধ্যেই বিদ্যমান থাকায় PDO::setAttribute-এর সাথে SSL সক্রিয় করা যাবে না। ÃÂû MySQL-এর সাথে SSL-এর সাথে সংযোগ করার বিষয়ে MySQL ডকুমেন্টেশনও দেখুন নীচের ধ্রুবকগুলি এই ড্রাইভার দ্বারা সংজ্ঞায়িত করা হয়েছে, এবং শুধুমাত্র তখনই উপলব্ধ হবে যখন এক্সটেনশনটি PHP-তে কম্পাইল করা হয়েছে বা রানটাইমে গতিশীলভাবে লোড করা হয়েছে৷ উপরন্তু, এই ড্রাইভার-নির্দিষ্ট ধ্রুবক শুধুমাত্র ব্যবহার করা উচিত যদি আপনি এই ড্রাইভার ব্যবহার করেন। অন্য ড্রাইভারের সাথে ড্রাইভার-নির্দিষ্ট বৈশিষ্ট্য ব্যবহার করার ফলে অপ্রত্যাশিত আচরণ হতে পারে। PDO::getAttribute() ড্রাইভার চেক করার জন্য অ্যাট্রিবিউট পেতে ব্যবহার করা যেতে পারে, যদি আপনার কোড একাধিক ড্রাইভারের বিরুদ্ধে চলতে পারে। a-তে, MySQL ড্রাইভার MySQL API-এর বাফার করা সংস্করণ ব্যবহার করবে। আপনি পোর্টেবল কোড লিখছেন, আপনি পরিবর্তে ব্যবহার করা উচিত. এই অ্যাট্রিবিউটটি টুন a সেট করা থাকলে, MySQL ড্রাইভার MySQL API-এর বাফার করা সংস্করণ ব্যবহার করবে। আপনি পোর্টেবল কোড লিখছেন, আপনি পরিবর্তে ব্যবহার করা উচিত. উদাহরণ #1 mysql-এ বাফার করা প্রশ্নগুলিকে জোর করে "আমার অ্যাপ্লিকেশন শুধুমাত্র mysql-এর সাথে কাজ করে; আমার পরিবর্তে \$stmt->fetchAll() ব্যবহার করা উচিত"নোট করুন, একটি নতুন ডাটাবেস হ্যান্ডেল তৈরি করার সময় এই ধ্রুবকটি শুধুমাত্র অ্যারেতে ব্যবহার করা যেতে পারে। এই মনোনীত ডিরেক্টরিতে অবস্থিত ফাইলগুলিতে স্থানীয় ডেটা লোডিং সীমাবদ্ধ করার অনুমতি দেয়৷ PHP 8.1.0 হিসাবে উপলব্ধ। দ্রষ্টব্য, একটি নতুন ডাটাবেস হ্যান্ডেল তৈরি করার সময় এই ধ্রুবকটি শুধুমাত্র অ্যারেতে ব্যবহার করা যেতে পারে। MySQL সার্ভারের সাথে সংযোগ করার সময় কার্যকর করার জন্য কমান্ড। পুনরায় সংযোগ করার সময় স্বয়ংক্রিয়ভাবে পুনরায় কার্যকর করা হবে৷ দ্রষ্টব্য, একটি নতুন ডাটাবেস হ্যান্ডেল তৈরি করার সময় এই ধ্রুবকটি শুধুমাত্র অ্যারেতে ব্যবহার করা যেতে পারে। থেকে এর পরিবর্তে নামযুক্ত বিকল্প ফাইল থেকে বিকল্পগুলি পড়ুন। mysqlnd ব্যবহার করা হলে এই বিকল্পটি পাওয়া যায় না, কারণ mysqlnd mysql কনফিগারেশন ফাইল পড়ে না। নামযুক্ত গ্রুপ থেকে বিকল্পগুলি পড়ুন বা এর সাথে নির্দিষ্ট করা ফাইলটি। mysqlnd ব্যবহার করা হলে এই বিকল্পটি পাওয়া যায় না, কারণ mysqlnd mysql কনফিগারেশন ফাইল পড়ে না। সর্বোচ্চ বাফার আকার। ডিফল্ট 1 MiB. mysqlnd এর বিপরীতে কম্পাইল করার সময় এই ধ্রুবকটি সমর্থিত নয়। পাওয়া (মিলে যাওয়া) সারির সংখ্যা ফেরত দিন, পরিবর্তিত সারির সংখ্যা নয়। SSL শংসাপত্র কর্তৃপক্ষের কাছে ফাইলের পথ। বিশ্বস্ত SSL CA শংসাপত্র ধারণ করে ডিরেক্টরির ফাইল পাথ, যা PEM বিন্যাসে সংরক্ষণ করা হয়। SSL শংসাপত্রের ফাইলের পথ। SSL এনক্রিপশনের জন্য ব্যবহার করার জন্য এক বা একাধিক অনুমোদিত সাইফারের একটি তালিকা, OpenSSL দ্বারা বোঝা একটি বিন্যাসে। উদাহরণস্বরূপ: SSL কী-তে ফাইল পাথ। সার্ভার SSL শংসাপত্রের যাচাইকরণ নিষ্ক্রিয় করার একটি উপায় প্রদান করে৷ এটি PHP 7.0.18 এবং PHP 7.1.4 হিসাবে বিদ্যমান। PDO::prepare() এবং PDO::query() এ সেট করা হলে মাল্টি কোয়েরি এক্সিকিউশন অক্ষম করে। দ্রষ্টব্য, একটি নতুন ডাটাবেস হ্যান্ডেল তৈরি করার সময় এই ধ্রুবকটি শুধুমাত্র অ্যারেতে ব্যবহার করা যেতে পারে এই ফাংশনগুলির আচরণে সেটিংস দ্বারা প্রভাবিত হয়৷ PHP_INI_* মোডগুলির আরও বিশদ বিবরণ এবং সংজ্ঞার জন্য, PHP_INI_* মোডগুলির আরও বিশদ বিবরণ এবং সংজ্ঞার জন্য দেখুন, যেখানে একটি কনফিগারেশন সেটিং সেট করা যেতে পারে একটি ইউনিক্স ডোমেন সকেট সেট করে দেখুন৷ কনফিগারে একটি ডোমেন সকেট পাওয়া গেলে এই মানটি কম্পাইলের সময় সেট করা যেতে পারে। এই ini সেটিং শুধুমাত্র ইউনিক্স। PDO_MYSQL এর জন্য ডিবাগিং সক্ষম করে৷ এই সেটিংটি শুধুমাত্র তখনই পাওয়া যায় যখন PDO_MYSQL mysqlnd এর বিপরীতে এবং PDO ডিবাগ মোডে কম্পাইল করা হয়।