পিডিও ব্যবহার করে: [1]
$in = join(',', array_fill(0, count($ids), '?'));
$select = <<<SQL
SELECT *
FROM galleries
WHERE id IN ($in);
SQL;
$statement = $pdo->prepare($select);
$statement->execute($ids);
মাইএসকিউএলি ব্যবহার করে [২]
$in = join(',', array_fill(0, count($ids), '?'));
$select = <<<SQL
SELECT *
FROM galleries
WHERE id IN ($in);
SQL;
$statement = $mysqli->prepare($select);
$statement->bind_param(str_repeat('i', count($ids)), ...$ids);
$statement->execute();
$result = $statement->get_result();
ব্যাখ্যা:
IN()
প্রদত্ত তালিকায় কোনও মান বিদ্যমান কিনা তা পরীক্ষা করতে এসকিউএল অপারেটরটি ব্যবহার করুন ।
সাধারণভাবে এটি দেখতে এটি দেখতে:
expr IN (value,...)
আমরা ()
আমাদের অ্যারের থেকে ভিতরে একটি ভাব প্রকাশ করতে পারি । নোট করুন যে বন্ধনীর ভিতরে কমপক্ষে একটি মান থাকতে হবে বা মাইএসকিউএল একটি ত্রুটি ফিরিয়ে দেবে; এটি আমাদের ইনপুট অ্যারে কমপক্ষে একটি মান আছে তা নিশ্চিত করার সমান। এসকিউএল ইঞ্জেকশন আক্রমণ থেকে রোধে সহায়তা করতে প্রথমে ?
প্রতিটি ইনপুট আইটেমের জন্য প্যারামিটারাইজড কোয়েরি তৈরি করতে একটি তৈরি করুন। এখানে আমি ধরে নিলাম যে আপনার আইডিসহ অ্যারে বলা হয় $ids
:
$in = join(',', array_fill(0, count($ids), '?'));
$select = <<<SQL
SELECT *
FROM galleries
WHERE id IN ($in);
SQL;
তিনটি আইটেমের একটি ইনপুট অ্যারে দেওয়া হ'ল $select
:
SELECT *
FROM galleries
WHERE id IN (?, ?, ?)
আবার নোট করুন যে ?
ইনপুট অ্যারেতে প্রতিটি আইটেমের জন্য একটি রয়েছে । তারপরে আমরা পিডিও বা মাইএসকিউএলি ব্যবহার করব উপরে উল্লিখিত হিসাবে ক্যোয়ারী প্রস্তুত এবং সম্পাদন করতে।
IN()
স্ট্রিং সহ অপারেটর ব্যবহার করা
আবদ্ধ পরামিতিগুলির কারণে স্ট্রিং এবং পূর্ণসংখ্যার মধ্যে পরিবর্তন করা সহজ। পিডিওর জন্য কোনও পরিবর্তনের প্রয়োজন নেই; মাইএসকিউএলআই-তে পরিবর্তন str_repeat('i',
করতে str_repeat('s',
যদি আপনার স্ট্রিং পরীক্ষা করতে হয়।
[1]: আমি ব্রেভিটি পরীক্ষা করার জন্য কিছু ত্রুটি বাদ দিয়েছি। প্রতিটি ডাটাবেস পদ্ধতির জন্য আপনাকে সাধারণ ত্রুটিগুলি পরীক্ষা করতে হবে (বা ব্যতিক্রম ছুঁড়ে দেওয়ার জন্য আপনার ডিবি ড্রাইভার সেট করুন)।
[2]: পিএইচপি 5.6 বা তার বেশি প্রয়োজন। আবার আমি ব্রেভিটি পরীক্ষা করার জন্য কিছু ত্রুটি বাদ দিয়েছি।