পিএইচপি-তে পৃষ্ঠা জেনারেশন লেখার সময়, আমি প্রায়শই নিজেকে ডাটাবেস কোয়েরিগুলিতে লিখিত ফাইলগুলির সেট লিখতে দেখি। উদাহরণস্বরূপ, কোনও পৃষ্ঠায় প্রদর্শন করার জন্য আমার কাছে ডাটাবেস থেকে সরাসরি কোনও পোস্ট সম্পর্কে কিছু তথ্য আনার জন্য একটি প্রশ্ন থাকতে পারে:
$statement = $db->prepare('SELECT * FROM posts WHERE id=:id');
$statement->bindValue(':id', $id, PDO::PARAM_INT);
$statement->execute();
$post = $statement->fetch(PDO::FETCH_ASSOC);
$content = $post['content']
// do something with the content
এই দ্রুত, এক-বন্ধ জিজ্ঞাস্যগুলি সাধারণত ছোট হয় তবে আমি মাঝে মাঝে ডাটাবেস ইন্টারঅ্যাকশন কোডের বড় অংশগুলি দিয়ে শেষ করি যা দেখতে বেশ অগোছালো দেখা শুরু করে।
কিছু ক্ষেত্রে, আমি আমার পোস্ট সম্পর্কিত ডিবি কোয়েরিগুলি পরিচালনা করার জন্য ফাংশনগুলির একটি সাধারণ গ্রন্থাগার তৈরি করে এই কোডটির ব্লকটি একটি সহজ করে সংক্ষিপ্ত করে এই সমস্যার সমাধান করেছি:
$content = post_get_content($id);
এবং এটি দুর্দান্ত। বা কমপক্ষে এটি অন্য কিছু করার দরকার না হওয়া পর্যন্ত। একটি তালিকায় প্রদর্শিত হতে পারে আমার সবচেয়ে সাম্প্রতিক পাঁচটি পোস্ট পেতে হবে। ঠিক আছে, আমি সবসময় অন্য ফাংশন যুক্ত করতে পারতাম:
$recent_posts = post_get_recent(5);
foreach ($recent_posts as $post) { ... }
তবে এটি একটি SELECT *
ক্যোয়ারী ব্যবহার করে শেষ হয় , যার সাধারণত আমার সাধারণত প্রয়োজন হয় না তবে প্রায়শই যুক্তিযুক্ত বিমূর্ত করার পক্ষে খুব জটিল হয়। আমি শেষ পর্যন্ত প্রতিটি একক ব্যবহারের ক্ষেত্রে ডাটাবেস ইন্টারঅ্যাকশন ফাংশনগুলির একটি বিশাল গ্রন্থাগার, বা প্রতিটি পৃষ্ঠার কোডের অভ্যন্তরে নোংরা কোয়েরিগুলির একটি সিরিজ দিয়ে শেষ করি। এমনকি একবার আমি এই লাইব্রেরিগুলি তৈরি করে নেওয়ার পরে, আমি নিজেকে একটি ছোটখাটো যোগদান করতে হবে যা আমি আগে ব্যবহার করি নি এবং হঠাৎ কাজটি করার জন্য আমাকে আরও একটি উচ্চ-বিশেষায়িত ফাংশন লিখতে হবে।
অবশ্যই, আমি নির্দিষ্ট ইন্টারঅ্যাকশনগুলির জন্য সাধারণ ব্যবহারের ক্ষেত্রে এবং প্রশ্নের জন্য ফাংশনগুলি ব্যবহার করতে পারি, তবে কাঁচা প্রশ্নগুলি লিখতে শুরু করার সাথে সাথে আমি সমস্ত কিছুর জন্য সরাসরি অ্যাক্সেসে ফিরে যেতে শুরু করি। তা হয়, না হয় আমি অলস হয়ে যাব এবং পিএইচপি লুপগুলিতে এমন কাজ শুরু করব যা সত্যিই মাইএসকিউএল কোয়েরিতে সরাসরি করা উচিত।
আমি ইন্টারনেট অ্যাপ্লিকেশন লেখার সাথে আরও অভিজ্ঞদের জিজ্ঞাসা করতে চাই: কোডের অতিরিক্ত লাইন এবং বিমূর্ততাগুলি প্রবর্তন করতে পারে এমন সম্ভাব্য অদক্ষতার মূল্য রক্ষণাবেক্ষণতা কি? অথবা সহজেই সরাসরি জিজ্ঞাসার স্ট্রিংগুলি ডাটাবেস ইন্টারঅ্যাকশন পরিচালনা করার জন্য একটি গ্রহণযোগ্য পদ্ধতি ব্যবহার করছেন?
select
গুলি সংরক্ষণের জন্য ব্যবহার করতে পারেন - আপনার কেবলমাত্র প্রয়োজনীয় প্যারামিটারগুলির সাথে এই জাতীয় পদ্ধতিগুলি কল করতে হবে