PDO_MYSQL ایک ڈرائیور ہے جو PHP سے MySQL ڈیٹا بیس تک رسائی کو فعال کرنے کے لیے PHP ڈیٹا آبجیکٹ (PDO) انٹرفیس کو لاگو کرتا ہے۔ 7.1.16 سے پہلے پی ایچ پی ورژن، یا 7.2.4 سے پہلے پی ایچ پی 7.2 چلاتے وقت، MySQL 8 سرور کے ڈیفالٹ پاس ورڈ پلگ ان کو mysql_native_password پر سیٹ کریں ورنہ آپ کو اس طرح کی غلطیاں نظر آئیں گی جیسے سرور نے تصدیقی طریقہ کی درخواست کی ہے جو کلائنٹ کے لیے نامعلوم ہے۔ استعمال نہیں کیا جاتا ہے. اس کی وجہ یہ ہے کہ MySQL 8 ڈیفالٹ caching_sha2_password سے ہے، ایک ایسا پلگ ان جسے پرانے PHP (mysqlnd) ریلیز سے پہچانا نہیں جاتا ہے۔ اس کے بجائے، میں ترتیب دے کر اسے تبدیل کریں۔ caching_sha2_password پلگ ان کو مستقبل کے PHP ریلیز میں سپورٹ کیا جائے گا۔ اس دوران، mysql_xdevapi ایکسٹینشن اس کی حمایت کرتی ہے۔ خبردار خبردار: کچھ MySQL ٹیبل کی قسمیں (اسٹوریج انجن) لین دین کی حمایت نہیں کرتی ہیں۔ جب لین دین کے ڈیٹابیس کوڈ کو ٹیبل کی قسم کا استعمال کرتے ہوئے لکھتے ہیں جو ٹرانزیکشن کو سپورٹ نہیں کرتا ہے، MySQL یہ دکھاوا کرے گا کہ ٹرانزیکشن کامیابی سے شروع ہوئی تھی۔ اس کے علاوہ، جاری کردہ کوئی بھی DDL سوالات واضح طور پر زیر التواء لین دین ہوں گے۔ MySQL ڈرائیور PDOStatement::bindParam کے ذریعے درست طریقے سے سپورٹ نہیں کرتا ہے جبکہ ایسے پیرامیٹرز استعمال کیے جا سکتے ہیں، وہ اپ ڈیٹ نہیں ہوتے ہیں (یعنی اصل آؤٹ پٹ کو نظر انداز کر دیا جاتا ہے) یونکس کی عام تقسیم میں پی ایچ پی کے بائنری ورژن شامل ہیں جو انسٹال کیے جا سکتے ہیں۔ اگرچہ یہ بائنری ورژن عام طور پر MySQL ایکسٹینشنز کے لیے سپورٹ کے ساتھ بنائے گئے ہیں، لیکن ایکسٹینشن لائبریریوں کو خود ایک اضافی پیکیج کا استعمال کرتے ہوئے انسٹال کرنے کی ضرورت پڑ سکتی ہے۔ پیکیج مینیجر کو چیک کریں جو دستیابی کے لیے آپ کی منتخب کردہ تقسیم کے ساتھ آتا ہے۔ مثال کے طور پر، Ubuntu پر پیکیج ext/mysql، ext/mysqli، اور PDO_MYSQL پی ایچ پی ایکسٹینشنز کو انسٹال کرتا ہے۔ CentOS پر، پیکیج ان تینوں پی ایچ پی ایکسٹینشنز کو بھی انسٹال کرتا ہے۔ متبادل طور پر، آپ اس توسیع کو خود مرتب کر سکتے ہیں۔ ماخذ سے پی ایچ پی بنانا آپ کو MySQL ایکسٹینشنز کی وضاحت کرنے کی اجازت دیتا ہے جسے آپ استعمال کرنا چاہتے ہیں، اور ساتھ ہی ہر ایکسٹینشن کے لیے آپ کی کلائنٹ لائبریری کا انتخاب۔ مرتب کرتے وقت، --with-pdo-mysql[=DIR] PDO MySQL ایکسٹینشن کو انسٹال کرنے کے لیے استعمال کریں، جہاں اختیاری MySQL بیس لائبریری ہے۔ Mysqlnd پہلے سے طے شدہ لائبریری ہے۔ لائبریری کے انتخاب کے بارے میں تفصیلات کے لیے، MySQL لائبریری کا انتخاب دیکھیں۔ اختیاری طور پر، --with-mysql-sock[=DIR] تمام MySQL ایکسٹینشنز بشمول PDO_MYSQL کے لیے MySQL یونکس ساکٹ پوائنٹر کے مقام پر سیٹ کرتا ہے۔ اگر غیر متعین ہے تو، پہلے سے طے شدہ مقامات تلاش کیے جاتے ہیں۔ اختیاری طور پر، --with-zlib-dir[=DIR] libz install کے سابقہ ​​کا راستہ طے کرنے کے لیے استعمال کیا جاتا ہے۔ مناسب PDO_MySQL مستقل استعمال کرتے ہوئے SSL سپورٹ کو فعال کیا گیا ہے، جو ÃÂû MySQL C API فنکشن کو کال کرنے کے مترادف ہے mysql_ssl_set اس کے علاوہ، SSL کو PDO::setAttribute کے ساتھ فعال نہیں کیا جا سکتا کیونکہ کنکشن پہلے سے موجود ہے۔ ÃÂû MySQL سے SSL سے منسلک ہونے کے بارے میں MySQL دستاویزات بھی دیکھیں نیچے دیے گئے کنسٹنٹ کی وضاحت اس ڈرائیور کے ذریعہ کی گئی ہے، اور یہ صرف اس وقت دستیاب ہوں گے جب ایکسٹینشن کو پی ایچ پی میں مرتب کیا گیا ہو یا رن ٹائم پر متحرک طور پر لوڈ کیا گیا ہو۔ اس کے علاوہ، یہ ڈرائیور کے لیے مخصوص کنسٹنٹ صرف اس صورت میں استعمال کیے جائیں جب آپ یہ ڈرائیور استعمال کر رہے ہوں۔ کسی دوسرے ڈرائیور کے ساتھ ڈرائیور کی مخصوص خصوصیات کا استعمال غیر متوقع رویے کا نتیجہ ہو سکتا ہے۔ 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 سرٹیفکیٹ کے لیے فائل کا راستہ۔ OpenSSL کے ذریعے سمجھے گئے فارمیٹ میں، SSL انکرپشن کے لیے استعمال کرنے کے لیے ایک یا زیادہ قابل اجازت سائفرز کی فہرست۔ مثال کے طور پر: 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 ڈیبگ موڈ میں مرتب کیا گیا ہو۔