Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP पीडीओ MySQL IN (?,?,?

यह संभव नहीं है जिस तरह से आप इसे आजमाते हैं। आपके पास हर उस पैरामीटर के लिए एक अलग प्लेसहोल्डर होना चाहिए जिसमें आप पास करना चाहते हैं, बाकी सब कुछ पैरामीटर के उद्देश्य को धता बता देगा (जो डेटा से कोड को अलग कर रहा है)।

$ids = array(2, 4, 6, 8);

// prepare a string that contains ":id_0,..,:id_n" and include it in the SQL
$plist = ':id_'.implode(',:id_', array_keys($ids));
$sql   = "SELECT * FROM someTable WHERE someId IN ($plist)";
// prepare & execute the actual statement
$parms = array_combine(explode(",", $plist), $ids);
$stmt  = $PDO->prepare($sql);
$rows  = $stmt->execute($parms);

यदि आपको बाइंड के दौरान मानों की एक सरणी में एक पैरामीटर में पास करने की अनुमति दी गई थी, तो आपको प्रभावी रूप से SQL कथन को बदलने की अनुमति होगी। यह SQL इंजेक्शन के लिए एक बचाव का रास्ता होगा - कुछ भी गारंटी नहीं दे सकता है कि सभी सरणी मान निर्दोष पूर्णांक होंगे।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं आईडी का उपयोग करके एकाधिक SQL तालिकाओं में कैसे शामिल हो सकता हूं?

  2. वास्तव में CONCAT_WS के साथ संघर्ष कर रहा है ... कृपया एक नौसिखिया की मदद करें :)

  3. शामिल हुए बिना एकाधिक तालिकाओं से चयन करें?

  4. कमांड लाइन का उपयोग करके SQL क्वेरी को TXT में कैसे निर्यात करें

  5. JDBC के साथ MySQL में सेलेक्ट में डालें